写了一段代码,发现进程没跑完就提前终止了?原因可能是进程运行一半出错了!注意多线程情况下不报错!
from multiprocessing import Process
import os
from multiprocessing import Pool
def run_proc(i):
a=i / 1
print(a)
if __name__=='__main__':
p = Pool(10)
for i in range(5):
p.apply_async(run_proc, args=(i,))
p.close()
p.join()
print ("done!")
# 输出
# 4.0
# 1.0
# 3.0
# 0.0
# 2.0
# done!
然而,如果
from multiprocessing import Process
import os
from multiprocessing import Pool
def run_proc(i):
a=i / 0
print(a)
if __name__=='__main__':
p = Pool(10)
for i in range(5):
p.apply_async(run_proc, args=(i,))
p.close()
p.join()
print ("done!")
# 输出
# done!
并没有如下这种除0的报错:
另外进程执行完后切记:
p.close()
p.join()
以及时释放资源