當前位置:成語大全網 - 書法字典 - 如何用Python實現多進程編程

如何用Python實現多進程編程

1.?過程

創建進程的類:Process([group?[,?目標?[,?名字?[,?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:將函數創建為單個進程。

進口?多重處理

進口?時間

def?工人(間隔):

n?=?五

什麽時候?n?& gt?0:

print("The?時間?是嗎?{0}".format(time.ctime()))

時間.睡眠(間隔)

n?-=?1

如果?__name__?==?" __main__ "

p?=?多重處理。流程(目標?=?工人?args?=?(3,))

開始()

打印?" p.pid:",?管道儀表流程圖

打印?" p.name:",?p.name

打印?" p.is_alive:",?p.is_alive()

結果

12345678p.pid:?8736p.name:?Process-1p.is_alive:?TrueThe?時間?是嗎?周二?Apr?21?20:55:12?2015The?時間?是嗎?周二?Apr?21?20:55:15?2015The?時間?是嗎?周二?Apr?21?20:55:18?2015The?時間?是嗎?周二?Apr?21?20:55:21?2015The?時間?是嗎?周二?Apr?21?20:55:24?2015

示例1.2:將壹個函數創建為多個進程。

進口?多重處理

進口?時間

def?worker_1(區間):

打印?"工人_1 "

時間.睡眠(間隔)

打印?“結束?worker_1 "

def?worker_2(間隔):

打印?"工人_2 "

時間.睡眠(間隔)

打印?“結束?工人_2 "

def?worker_3(間隔):

打印?"工人_3 "

時間.睡眠(間隔)

打印?“結束?工人_3 "

如果?__name__?==?" __main__ "

p1?=?多重處理。流程(目標?=?worker_1,?args?=?(2,))

p2?=?多重處理。流程(目標?=?工人_2,?args?=?(3,))

p3?=?多重處理。流程(目標?=?工人_3,?args?=?(4,))

p1.start()

p2.start()

p3.start()

print("The?號碼?的?CPU?是:“?+?str(multiprocessing.cpu_count())

為了什麽?p?在?多重處理. active_children():

打印("孩子?p.name:"?+?p.name?+?" \tp.id "?+?str(p.pid))

打印?“結束!!!!!!!!!!!!!!!!!"

結果

1234567891011 the?號碼?的?CPU?is:4child?p.name:Process-3p.id7992child?p.name:Process-2p.id4204child?p . name:Process-1p . id 6380 end!!!!!!!!!!!!!!!!!worker _ 1 worker _ 3 worker _ 2 end?worker_1end?worker_2end?工人_3

示例1.3:將進程定義為類。

進口?多重處理

進口?時間

班級?ClockProcess(多重處理。流程):

def?__init__(self,間隔):

多重處理. Process.__init__(self)

自我間隔?=?間隔

def?運行(自我):

n?=?五

什麽時候?n?& gt?0:

print("the?時間?是嗎?{0}".format(time.ctime()))

時間.睡眠(自我間隔)

n?-=?1

如果?__name__?==?__main__ ':

p?=?時鐘進程(3)

開始()

註意:當進程P調用start()時,它會自動調用run()。

結果

12345the?時間?是嗎?周二?Apr?21?20:31:30?2015the?時間?是嗎?周二?Apr?21?20:31:33?2015the?時間?是嗎?周二?Apr?21?20:31:36?2015the?時間?是嗎?周二?Apr?21?20:31:39?2015the?時間?是嗎?周二?Apr?21?20:31:42?2015