python中的多線程並不是真正的多線程。如果想充分利用多核CPU的資源,大多數情況下需要使用python中的多進程。Python提供了非常有用的多進程包多重處理。只需定義壹個函數,Python就會做所有其他的事情。有了這個包,妳可以很容易地完成從單個進程到並發執行的轉換。多處理支持子進程、通信、* *數據共享和不同形式的同步,並提供進程、隊列、管道和鎖等組件。
回到頂端
1.過程
創建process的類:process ([group [,target [,name [,args [,kwargs]]),其中target表示調用對象,args表示調用對象的位置參數元組。Kwargs表示調用對象的字典。名稱是別名。組實際上不使用。
方法:is_alive(),join([timeout]),run(),start(),terminate()。其中Process使用start()啟動壹個進程。
屬性:authkey、daemon(由start()設置)、exitcode(進程在運行時為None,如果為–n,則表示被信號n終止)、name和pid。其中daemon在父進程終止後自動終止,不能自己生成新的進程,必須在start()之前設置。
示例1.1:將函數創建為單個進程。
導入多處理導入timedef工作進程(間隔):
當n >時,n = 50: print("時間是{0} "。format(time.ctime()))
時間.睡眠(間隔)
n-= 1 if _ _ name _ _ = = " _ _ main _ _ ":
p =多重處理。進程(目標=工作進程,參數= (3,))
p.start() print "p.pid:",p.pid print "p.name:",p.name print "p.is_alive:",p.is_alive()
結果
12345678p.pid:?8736 p . name:Process-1p . is _ alive:true時間是四月二日?21?20:55:12?2065 438+05時間是4月2日星期二?21?20:55:15?2065 438+05時間是4月2日星期二?21?20:55:18?2065 438+05時間是4月2日星期二?21?20:55:21?2065 438+05時間是4月2日星期二?21?20:55:24?2015示例1.2:將壹個函數創建為多個進程。
導入多重處理import time def worker _ 1(interval):print " worker _ 1 "
time . sleep(interval)print " end worker _ 1 " def worker _ 2(interval):print " worker _ 2 "
time . sleep(interval)print " end worker _ 2 " def worker _ 3(interval):print " worker _ 3 "
time.sleep(interval)打印" end worker _ 3 " if _ _ name _ _ = = " _ _ main _ _ ":
p1 =多重處理。進程(target = worker_1,args = (2,))
p2 =多重處理。進程(target = worker_2,args = (3,))
p3 =多重處理。進程(target = worker_3,args = (4,))
p1.start()
p2.start()
P3 . start()print(" CPU的個數是:"+str(multi processing . CPU _ count()))for p in multi processing . active _ children():print(" child?p . name:"+p . name+" \ TP . id "+str(p . PID))print " END!!!!!!!!!!!!!!!!!"
結果
1234567891011 CPU的數量是:4child?p.name:Process-3p.id7992child?p.name:Process-2p.id4204child?p . name:Process-1p . id 6380 end!!!!!!!!!!!!!!!!!工人_ 1工人_3工人_ 2最終工人_ 1最終工人_ 2最終工人_ 3