python ThreadPool线程池的运用
执行以下计算逻辑,阻塞,同步执行,发现特别慢,进行优化一下
qs = [i for i in range(200)]
def calculate_num(item):
"""费时操作(eg: 查询并计算)"""
print(item)
for item in qs:
calculate_num(item)
使用进程池,并发执行任务,速度直接提升2倍不止(服务器配置越高,处理速度越快)
from multiprocessing.pool import ThreadPool
qs = [i for i in range(200)]
pool = ThreadPool() # 创建一个线程池, processes=None时,返回 os.cpu_count() or 1
# pool.map(self.calculate_num, qs) # 往线程池中填线程
pool.map_async(calculate_num, qs) # 往线程池中异步填线程
pool.close() # 关闭线程池,不再接受线程
pool.join() # 等待线程池中线程全部执行完
查看当前机器的cpu核数
import os
c = os.cpu_count()
print(c)
本文探讨了如何通过Python的ThreadPool线程池实现计算逻辑的同步执行,尤其是在处理大量任务时遇到的性能瓶颈。通过对比同步和异步方式,以及利用多进程池的并发优势,优化了计算速度,特别是在服务器资源充足的环境下。
975

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



