前言
因为GIL锁的存在,Python的多线程没办法做到同时利用多核做运算,所以在计算密集型任务中,多线程耗时=串行计算+线程切换开销,导致性能还不如单线程串行计算。
但是在IO密集型任务中,在某一个IO阻塞时(等待结果返回),CPU是空闲的,这时候多线程是可以发挥作用的。
所以我们通常会结合多进程/多线程去做一些IO操作,大大提升了速度,这里介绍一下我常用的多线程用法。
线程池实现
线程池的优点是不用频繁地开辟和销毁线程,能很好地利用资源节省时间
- 带返回值的线程池实现
from concurrent.futures import ThreadPoolExecutor
#线程池配置
threadPool = ThreadPoolExecutor(max_workers=4, thread_name_prefix="test")
for i in range(100):
future = threadPool.submit(func,para1,para2)
res=future.result()
def func(para1,para2):
pass
676

被折叠的 条评论
为什么被折叠?



