python中multiprocessing模塊就是跨平臺版本的多進(jìn)程模塊,提供了一個Process類來代表一個進(jìn)程對象,這個對象可以理解為是一個獨(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語法:
Process([group[,target[,name[,args[,kwargs]]]]])
參數(shù)--------------------------
target:如果傳遞了函數(shù)的引用,可以任務(wù)這個子進(jìn)程就執(zhí)行這里的代碼
args:給target指定的函數(shù)傳遞的參數(shù),以元組的方式傳遞
kwargs:給target指定的函數(shù)傳遞命名參數(shù)
name:給進(jìn)程設(shè)定一個名字,可以不設(shè)定
group:指定進(jìn)程組,大多數(shù)情況下用不到
Process創(chuàng)建的實(shí)例對象的常用方法:
方法--------------------------
start():啟動子進(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í)例對象的常用屬性:
屬性-------------------------
name:當(dāng)前進(jìn)程的別名,默認(rèn)為Process-N,N為從1開始遞增的整數(shù)
pid:當(dāng)前進(jìn)程的pid(進(jìn)程號)
示例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=('語文',),kwargs={'teacher':'張三'})
p.start()
whileTrue:
print("主進(jìn)程----pid:{}----{}上{}課".format(os.getpid(),'李四','數(shù)學(xué)'))
time.sleep(1)
示例4進(jìn)程間不會共享全局變量
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)程,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.mycheba.com/