Python3:concurrent意外退出的问题
在使用新出的concurrent
模块时遇到了一些问题,比如:
import concurrent.futures
max_workers = 30
with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as e:
for i in range(max_workers):
e.submit(dl_b, opener)
我在运行时多线程就会自动停止,而且不报出任何错误。
使用threading
调试发现是因为线程出错,导致线程被终止,当所有线程都被终止时,整个多线程框架即停止。
所以使用concurrent
模块出现意外退出需要考虑是线程执行代码出错之类的问题,concurrent
模块不会显示出出错信息,所以很难发觉。
concurrent
模块用着确实不错,尤其是使用with
后代码清爽了许多,但如果代码有较多不可靠因素,使用传统的threading
模块会比较好。
x = e.submit(dl_b, opener)
x.result( )
这样就显示出错信息了
学到了~谢谢!