一:multiprocess基本使用
multiprocessing是要比fork更高級的庫了,使用multiprocessing可以更加輕松的實現多進程程序。multiprocessing也提供了很多進程同步和進程通信的方法。
《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm
《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm
Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm
在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm
#!/usr/bin/env python
import multiprocessing
import time
def clock(interval):
while True:
print "The time is {0}".format(time.ctime())
time.sleep(interval)
if __name__ == "__main__":
for i in range(3):
p = multiprocessing.Process(target=clock,args=(1,))
p.start()
p.join()
join()代表啟動多進程,但是阻塞並發運行,一個進程執行結束後再執行第二個進程。可以給其設置一個timeout值比如join(5)代表5秒後無論當前進程是否結果都繼續並發執行第二個進程。
二:進程同步
對於一些互斥的資源來說,進程間需要進程互斥來訪問。否則導致資源訪問受阻,或者最後的結果混亂等情況。對於標准輸出這個資源來說,如果多個資源同屬輸出信息,可能會導致輸出的信息混亂。所以需要使用鎖來避免資源互斥訪問。
from multiprocessing import Process,Lock
def f(l,i):
l.acquire()
print "hello world",i
l.release()
if __name__ == "__main__":
lock = Lock()
for num in range(10):
Process(target=f,args=(lock,num)).start()
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-07/104158p2.htm