昨天学了下子进程创建,然后自己做实例的时候,发现子进程不运行,而是直接结束了主进程。由于是子进程,所以有没有错误看不见。
from multiprocessing import Pool
import os,time,random
def worker(msg):
t_start = time.time()
print("%s开始执行,进程号为%d"%(msg, os.grtpid()))
time.sleep(random.random()*2)
t_stop = time.time()
print(msg,"执行完毕,耗时%0.2f"%(t_stop - t_start))
po=Pool(3)
for i in range(0,10):
po.apply_async(worker,(i,))
print("-----strat-----")
po.close()
po.join()
print("------end------")
结果就是
----start----
-----end-----
错误原因是定义worker时,os.getpid()写错
之后在函数中加入异常处理即可发现错误,即:
def worker(msg):
try:
t_start = time.time()
print("%s开始执行,进程号为%d