multiprocessing多進程(31-04)創建進程的兩種方式
阿新 • • 發佈:2018-09-19
pen 一個 process 創建進程 __main__ ack 執行 ctime 統一
一個進程可以寄生多個線程。
CPU核數與進程個數是統一的,
若進程多於核數,那麽只有等待上一進程執行完才能被執行。
------------------第一種進程創建方式------------------------
from multiprocessing import Process
import time
def A(name):
time.sleep(1)
print(‘haello‘, name, time.ctime())
if __name__ == "__main__":
p_list = []
for i in range(3): # 創建三個進程
P = Process(target=A, args=(‘kay‘))
p_list.append(p)
p.start() # 準備進程,讓CPU執行
for p in p_list:
p.join() # 阻塞住,所以進程執行完才執行下面代碼
print(‘end‘)
運行結果:
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
---------------------------第二種進程創建方式(類式調用)---------------------------------------
from multiprocessing import Process
class MyProcess(Process): # 繼承Process方法
def __init__(self, name):
super(MyProcess, self).__init__() # 執行子類的__init__方法
self.name = name # 防止執行父類中的方法
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‘)
運行結果:
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,如果不重新封裝,會默認執行父類封裝好的,而父類封裝好的name是顯示當前進程號。
multiprocessing多進程(31-04)創建進程的兩種方式