0x01 多线程不生效
使用ThreadPoolExecutor线程池,并使用submit提交调用函数
开始调用写法
from concurrent.futures import ThreadPoolExecutor
from concurrent import futures
pool = ThreadPoolExecutor(20)
result = pool.submit(test, arg1).result
简单说下两句的用法,第一句是设置线程池最大线程数为20,第二句是多线程调用函数test,并且test函数有个参数是arg1,.result是获取函数调用以后得返回结果,这样调用的一个问题是提交以后会等到有结果以后才会重新创建一个线程
正确的用法
from concurrent.futures import ThreadPoolExecutor
from concurrent import futures
pool = ThreadPoolExecutor(20)
task = pool.submit(test, arg1)
tread.append(task)
for t in futures.as_completed(tread):
try:
result = t.result()
except Exception as e:
print("线程执行错误:{}".format(e))
使用as_completed()函数判断线程是否执行完成,然后再获取result