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