我创建了一个执行多线程的脚本,每个线程都向API请求检索一些数据。不幸的是,其中一个线程可能会遇到断开连接错误(可能是因为网站的API过载),结果整个python脚本无限期挂起......当一个工作者之一时,如何强制脚本正常退出线程有断线错误?我以为使用terminate
会关闭线程。
我的代码:
runId = sys.argv[1]
trth = TrThDownload(runId)
data = trth.data
concurrences = min(len(data),10)
p = pool.ThreadPool(concurrences)
p.map(trth.runDownloader, data)
p.terminate()
p.close()
p.join()
你真的应该尝试异步编程。我更喜欢gevent
。在脚本的顶部,只需执行以下操作:
import gevent
gevent.monkey.patch_all()
此外,请勿在加入前终止或关闭。只需使用加入。