簡體   English   中英

如何並行執行函數:Python

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

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