python中multiprocessing模塊就是跨平臺版本的多進程模塊,提供了一個Process類來代表一個進程對象,這個對象可以理解為是一個獨立的進程,可以執行另外的事情
示例1
frommultiprocessingimportProcess
importtime
defrun_process():
whileTrue:
print("子進程----2----")
time.sleep(1)
if__name__=='__main__':
p=Process(target=run_process)#target指定目標函數
p.start()
whileTrue:
print("主進程----1----")
time.sleep(1)
Process語法:
Process([group[,target[,name[,args[,kwargs]]]]])
參數--------------------------
target:如果傳遞了函數的引用,可以任務這個子進程就執行這里的代碼
args:給target指定的函數傳遞的參數,以元組的方式傳遞
kwargs:給target指定的函數傳遞命名參數
name:給進程設定一個名字,可以不設定
group:指定進程組,大多數情況下用不到
Process創建的實例對象的常用方法:
方法--------------------------
start():啟動子進程實例(創建子進程)
is_alive():判斷進程子進程是否還在活著
join([timeout]):是否等待子進程執行結束,或等待多少秒
terminate():不管任務是否完成,立即終止子進程
Process創建的實例對象的常用屬性:
屬性-------------------------
name:當前進程的別名,默認為Process-N,N為從1開始遞增的整數
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(),'李四','數學'))
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]
以上內容為大家介紹了Python中使用多進程,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/