python中multiprocessing模塊就是跨平臺(tái)版本的多進(jìn)程模塊,提供了一個(gè)Process類來(lái)代表一個(gè)進(jìn)程對(duì)象,這個(gè)對(duì)象可以理解為是一個(gè)獨(dú)立的進(jìn)程,可以執(zhí)行另外的事情
示例1
frommultiprocessingimportProcess
importtime
defrun_process():
whileTrue:
print("子進(jìn)程----2----")
time.sleep(1)
if__name__=='__main__':
p=Process(target=run_process)#target指定目標(biāo)函數(shù)
p.start()
whileTrue:
print("主進(jìn)程----1----")
time.sleep(1)
Process語(yǔ)法:
Process([group[,target[,name[,args[,kwargs]]]]])
參數(shù)--------------------------
target:如果傳遞了函數(shù)的引用,可以任務(wù)這個(gè)子進(jìn)程就執(zhí)行這里的代碼
args:給target指定的函數(shù)傳遞的參數(shù),以元組的方式傳遞
kwargs:給target指定的函數(shù)傳遞命名參數(shù)
name:給進(jìn)程設(shè)定一個(gè)名字,可以不設(shè)定
group:指定進(jìn)程組,大多數(shù)情況下用不到
Process創(chuàng)建的實(shí)例對(duì)象的常用方法:
方法--------------------------
start():?jiǎn)?dòng)子進(jìn)程實(shí)例(創(chuàng)建子進(jìn)程)
is_alive():判斷進(jìn)程子進(jìn)程是否還在活著
join([timeout]):是否等待子進(jìn)程執(zhí)行結(jié)束,或等待多少秒
terminate():不管任務(wù)是否完成,立即終止子進(jìn)程
Process創(chuàng)建的實(shí)例對(duì)象的常用屬性:
屬性-------------------------
name:當(dāng)前進(jìn)程的別名,默認(rèn)為Process-N,N為從1開(kāi)始遞增的整數(shù)
pid:當(dāng)前進(jìn)程的pid(進(jìn)程號(hào))
示例2進(jìn)程pid
frommultiprocessingimportProcess
importtime
importos
defrun_process():
whileTrue:
print("子進(jìn)程----pid:{}----".format(os.getpid()))
print()
time.sleep(1)
if__name__=='__main__':
p=Process(target=run_process)
p.start()
whileTrue:
print("主進(jìn)程----pid:{}----".format(os.getpid()))
time.sleep(1)
示例3子進(jìn)程目標(biāo)方法傳參
frommultiprocessingimportProcess
importtime
importos
defrun_process(course,teacher,*args,**kwargs):
whileTrue:
print("子進(jìn)程----pid:{}----{}上{}課".format(os.getpid(),teacher,course))
print()
time.sleep(1)
if__name__=='__main__':
p=Process(target=run_process,args=('語(yǔ)文',),kwargs={'teacher':'張三'})
p.start()
whileTrue:
print("主進(jìn)程----pid:{}----{}上{}課".format(os.getpid(),'李四','數(shù)學(xué)'))
time.sleep(1)
示例4進(jìn)程間不會(huì)共享全局變量
frommultiprocessingimportProcess
importtime
importos
num_list=[0,1,3,4,5,6,7,8,9,10]
i=3
defrun_process1():
globali
whilei:
print("子進(jìn)程----pid:{}----".format(os.getpid()))
num_list.pop()
print(num_list)
i=i-1
time.sleep(1)
defrun_process2():
globali
whilei:
print("子進(jìn)程----pid:{}----".format(os.getpid()))
num_list.append(i+1)
print(num_list)
i=i-1
time.sleep(1)
if__name__=='__main__':
p=Process(target=run_process1)
p.start()
p=Process(target=run_process2)
p.start()
輸出
子進(jìn)程----pid:10187----
[0,1,3,4,5,6,7,8,9]
子進(jìn)程----pid:10188----
[0,1,3,4,5,6,7,8,9,10,4]
子進(jìn)程----pid:10187----
[0,1,3,4,5,6,7,8]
子進(jìn)程----pid:10188----
[0,1,3,4,5,6,7,8,9,10,4,3]
子進(jìn)程----pid:10187----
[0,1,3,4,5,6,7]
子進(jìn)程----pid:10188----
[0,1,3,4,5,6,7,8,9,10,4,3,2]
以上內(nèi)容為大家介紹了Python中使用多進(jìn)程,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.madgrindclothing.com/