python3中子进程不报错的问题

xiaoxiao2021-02-28  97

昨天学了下子进程创建,然后自己做实例的时候,发现子进程不运行,而是直接结束了主进程。由于是子进程,所以有没有错误看不见。

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"%(msg, os.grtpid()))         time.sleep(random.random()*2)         t_stop = time.time()         print(msg,"执行完毕,耗时%0.2f"%(t_stop - t_start))     except Exception as ex:         msg = "you cuo wu, shi:%s"%ex         print(ex)

之后便能直接发现问题所在,不用自己一遍遍找,调试,还可能找不到问题。

try真好用啊_(:3」∠)_

转载请注明原文地址: https://www.6miu.com/read-30051.html

最新回复(0)