001_python多進程實例
阿新 • • 發佈:2018-10-04
highlight sleep usr 每次 range time pre 舉例 urn
一、工作中需要執行zk數據對比,需要按照機器進行並發,舉例以下的例子
# coding:utf8 # !/usr/bin/python import time from multiprocessing import Pool def test(i): ‘‘‘ 執行這個程序的時候ps -ef|grep xxx.py可以看到啟動了11個進程(1個父進程和10個子進程),這裏的sleep(3)秒,會每3秒同時輸出10個數字 :param i: :return: ‘‘‘ print i time.sleep(3) if __name__ == "__main__": pool = Pool(processes=10) for i in xrange(500): ‘‘‘ For循環中執行步驟: (1)循環遍歷,將500個子進程添加到進程池(相對父進程會阻塞) (2)每次執行10個子進程,等一個子進程執行完後,立馬啟動新的子進程。(相對父進程不阻塞) apply_async為異步進程池寫法。 異步指的是啟動子進程的過程,與父進程本身的執行(print)是異步的,而For循環中往進程池添加子進程的過程,與父進程本身的執行卻是同步的。 ‘‘‘ pool.apply_async(test, args=(i,)) # 維持執行的進程總數為10,當一個進程執行完後啟動一個新進程. print "=================" pool.close() pool.join()
輸出=>可以看到會10個一批的輸出
0 1 2 3 4 5 6 7 8 9 ================= 10 11 12 13 14 15 16 17 18 19 ....................
001_python多進程實例