python踩的坑(持续更新)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章