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

鍍金池/ 問答/Python/ python多進(jìn)程的問題

python多進(jìn)程的問題

多進(jìn)程在osx和linux下輸出不同
代碼:

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

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

回答
編輯回答
悶油瓶

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

使用多進(jìn)程多線程,只要記住 除非明確,否則不要對運(yùn)行順序有任何假設(shè) 就可以了。

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

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

2017年9月18日 10:54