簡體   English   中英

Windows和Spyder中的python多重處理問題

[英]python multiprocessing issue in windows and spyder

我有一個關於python多重處理的大學項目,對於python項目,我在Windows中使用spyder。 因此,我試圖在spyder中運行非常瑣碎的多處理代碼,但每次運行spyder控制台時,它都會凍結並且永遠無法完成。 這是我的代碼:

from multiprocessing import Pool, freeze_support
import multiprocessing

def f(i):
    return i+1

def main():
    pool = multiprocessing.Pool(4)
    result = pool.map(f, range(4))
    pool.close()
    pool.join()
    print result

if __name__ == '__main__':
    freeze_support() #you need this in windows
    main()

我已經注意到這是多處理過程中常見的問題,並且Windows中沒有fork,因此我考慮了16.6.3.2段。 Windows, 網址為https://docs.python.org/2/library/multiprocessing.html#windows

我還避免了如下所述從子進程中進行打印: 簡單的Python Multiprocessing函數不會輸出結果 ,而是使用return。

如果我從unix終端運行它,我的代碼將起作用,但是我主要是將Windows用於python項目。 Windows中是否有針對此問題的解決方法?

經過一番研究,我了解到交互式口譯員和多流程處理存在問題。

https://docs.python.org/2.7/library/multiprocessing.html#introduction中指出: 注意 :...某些示例(例如Pool示例)在交互式解釋器中不起作用。

spyder維護人員回答了一個較舊的文章,該文章解決了類似的問題,即在Windows的Spyder IPython控制台中,多處理確實無法正常工作。 沒有多處理打印輸出(Spyder)

到目前為止,我發現的唯一解決方法是使用Windows cmd運行代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM