在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python多進程的問題

python多進程的問題

多進程在osx和linux下輸出不同
代碼:

import multiprocessing
def func(i):
    print multiprocessing.current_process().name + '-' + i
if __name__ == "__main__":
    pool = multiprocessing.Pool(processes=10) # 創(chuàng)建4個進程
    for i in xrange(10):
        **pool.apply_async(func, (i, ))**
    pool.close() # 關閉進程池,表示不能在往進程池中添加進程
    pool.join() # 等待進程池中的所有進程執(zhí)行完畢,必須在close()之后調用
    print "Sub-process(es) done."

問題:
1:同樣的程序在osx和linux下的輸出為什么不一樣?多進程從0到9,輸出的i值應該是混亂的
對于osx 輸出的i值是0-9有序,每次運行i值排序結果都一樣,對于linux是亂序的,每次運行i值排序結果不一樣,這是為什么呢?是因為osx和linux的系統(tǒng)的不同嗎?

回答
編輯回答
悶油瓶

不要對輸出順序有任何假設。
具體輸出成什么樣,這個不要在意,就是每次都是順序的,那也是“亂序”的一種不是。所以,對某些系統(tǒng)為什么和別的系統(tǒng)不太一致不予置評。

使用多進程多線程,只要記住 除非明確,否則不要對運行順序有任何假設 就可以了。

2017年8月26日 18:38
編輯回答
懶豬

這取決于你的CPU核數(shù),你的osx應該只有2核,你多運行幾次就會發(fā)現(xiàn)不是次次一樣

2017年9月18日 10:54