歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python之多進程multiprocessing

Python之多進程multiprocessing

日期:2017/3/1 9:42:16   编辑:Linux編程

一: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

Copyright © Linux教程網 All Rights Reserved