[英]How to execute function parallel : Python
我正在嘗試使用多處理並行執行以下代碼,但沒有得到正確的輸出。
1和5的迭代應該並行進行
from multiprocessing import Pool
def func1(x):
i = x
while i < 10:
print(str(i)+" fun1")
i +=1
if __name__ == '__main__':
pool = Pool(processes=1)
pool.map(func1, [1,5])
我得到的結果是:發生了更多的迭代
1 fun1 2 fun1 3 fun1 4 fun1 5 fun1 6 fun1 7 fun1 8 fun1 9 fun1 5 fun1 6 fun1 7 fun1 8 fun1 9 fun1
預期的輸出:兩次迭代應並行發生
1娛樂1 5娛樂1 2娛樂1 6娛樂1 3娛樂1 7娛樂1 4娛樂1 8娛樂1 5娛樂1 9娛樂1 6娛樂1 7娛樂1 8娛樂1 9娛樂1
由於全局解釋器鎖定,您期望的沒有發生。 看看: https : //wiki.python.org/moin/GlobalInterpreterLock
我無法用您的代碼復制您的結果。 我得到了預期的行為(請注意在“ if”語句之前調用“ func1”):
1有趣1 2有趣1 3有趣1 4有趣1 5有趣1 6有趣1 7有趣1 8有趣1 9有趣1 1有趣1 2有趣1 3有趣1 4有趣1 5有趣1 6有趣1 7有趣1 8有趣1 9有趣1 5有趣1 6有趣1 7有趣1 8有趣1 9有趣1
由於某種原因,您要調用func1(1)3次。
無論如何,您僅啟動1個進程,因此執行將是串行的。 您需要多個進程來並行執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.