[英]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.