multiprocessing多进程(31-04)创建进程的两种方式
?
一個進(jìn)程可以寄生多個線程。
CPU核數(shù)與進(jìn)程個數(shù)是統(tǒng)一的,
若進(jìn)程多于核數(shù),那么只有等待上一進(jìn)程執(zhí)行完才能被執(zhí)行。
------------------第一種進(jìn)程創(chuàng)建方式------------------------
from multiprocessing import Processimport time
def A(name):
time.sleep(1)
print('haello', name, time.ctime())
if __name__ == "__main__":
p_list = []
for i in range(3): # 創(chuàng)建三個進(jìn)程
P = Process(target=A, args=('kay'))
p_list.append(p)
p.start() # 準(zhǔn)備進(jìn)程,讓CPU執(zhí)行
for p in p_list:
p.join() # 阻塞住,所以進(jìn)程執(zhí)行完才執(zhí)行下面代碼
print('end')
?運行結(jié)果:
hello kay Wed Sep 19 10:18:00 2018 hello kay Wed Sep 19 10:18:00 2018 hello kay Wed Sep 19 10:18:00 2018 end---------------------------第二種進(jìn)程創(chuàng)建方式(類式調(diào)用)---------------------------------------
from multiprocessing import Processclass MyProcess(Process): # 繼承Process方法
def __init__(self, name):
super(MyProcess, self).__init__() # 執(zhí)行子類的__init__方法
self.name = name # 防止執(zhí)行父類中的方法
def run(self):
time.sleep(1)
print('hello', self.name, time.ctime())
if __name__ == "__main__":
p_list = []
for i in range(3):
?? p = MyProcess('kay')
? p.start()
? p_list.append(p)
for p in p_list:
?? p.join() # 阻塞住
? print('end')
??
運行結(jié)果:
hello kay Wed Sep 19 11:38:40 2018
hello kay Wed Sep 19 11:38:40 2018
hello kay Wed Sep 19 11:38:40 2018
end
?
在父類中也有封裝name,如果不重新封裝,會默認(rèn)執(zhí)行父類封裝好的,而父類封裝好的name是顯示當(dāng)前進(jìn)程號。
?
轉(zhuǎn)載于:https://www.cnblogs.com/uncle-kay/p/9673828.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的multiprocessing多进程(31-04)创建进程的两种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: checkVector()
- 下一篇: javascript基本数据类型问题汇总