創建進程的類: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