[英]TypeError raised when using concurrent.futures
I am trying to use concurrent.futures.ThreadPoolExecutor to optimize some exiting code, but the program actually goes wrong.我正在尝试使用 concurrent.futures.ThreadPoolExecutor 来优化一些现有代码,但程序实际上出错了。
def main():
dataDB = DataStorage.DataStorage("127.0.0.1", 27017)
data_catch_info = {}
data_catch_info["tempName"] = "catch_data_demo"
data_catch_info["lgURL"] = []
data_catch_info["author"] = "corporate slave"
url_pool = LookingURLPool.LgPool()
thread_pool = ThreadPoolExecutor(max_workers=2)
with DataProducer.DataProducer() as dp:
tasks = []
for url in url_pool.lg_pool("template1"):
# thread_func(url,url_pool,dataDB,dp,data_catch_info)
tasks.append(thread_pool.submit(thread_func,(url,url_pool,dataDB,dp,data_catch_info)))
print(wait(tasks))
del thread_pool
del url_pool
del dataDB
It finally print:它最终打印:
DoneAndNotDoneFutures(done={<Future at 0x1978ae6e040 state=finished raised TypeError>, <Future at 0x1978aeb8d90 state=finished raised TypeError>, ...<Future at 0x1978ae79fd0 state=finished raised TypeError>, <Future at 0x1978aeceb50 state=finished raised TypeError>}, not_done=set()) DoneAndNotDoneFutures(done={<Future at 0x1978ae6e040 state=finished raise TypeError>, <Future at 0x1978aeb8d90 state=finished raise TypeError>, ...<Future at 0x1978ae79fd0 state=finished Future raise TypeError>, <Future at 0x1978ae79fd0 state=finished Future raise TypeError>, <Future at 0x1978aeb8d90 >}, not_done=set())
Can anyone explain what's going wrong?谁能解释一下出了什么问题?
Now everything is OK!现在一切正常!
Just change tasks.append(thread_pool.submit(thread_func,(url,url_pool,dataDB,dp,data_catch_info)))
as tasks.append(thread_pool.submit(thread_func,(url),(url_pool),(dataDB),(dp),(data_catch_info)))
只需将
tasks.append(thread_pool.submit(thread_func,(url,url_pool,dataDB,dp,data_catch_info)))
tasks.append(thread_pool.submit(thread_func,(url),(url_pool),(dataDB),(dp),(data_catch_info)))
为tasks.append(thread_pool.submit(thread_func,(url),(url_pool),(dataDB),(dp),(data_catch_info)))
When submit a func requiring not only params, we are expected to divide params into different ().当提交一个不仅需要 params 的 func 时,我们期望将 params 划分为不同的 ()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.