python ThreadPoolExecutor线程池使用

简介: 最近用上ThreadPoolExecutor, 用来代替celery的方式。 主要是用在celery上的时间太少, 没有吃透, 还有,我们的应用没有复杂到那地步, 多开几个服务器,也可以实现线程池的扩展。

python有好几种实现线程池的方式,

注意选择一下,哪种是自己需要的。

最近用上ThreadPoolExecutor,

用来代替celery的方式。

主要是用在celery上的时间太少,

没有吃透,

还有,我们的应用没有复杂到那地步,

多开几个服务器,也可以实现线程池的扩展。


ThreadPoolExecutor主要有submit和map方式。

map就够用我们的场景了。


使用ThreadPoolExecutor时,需要注意的是map函数的参数是如何构造的。

(就是将cmd_run后面的参数,构造为有相同于进程池数量的参数列表!!!)

【就是参数个人为cmd_run要求的个数,但列表内的长度为进程池数量,利用率刚好】

 data为每个函数的返回值。

注意,进程的退出,不到山穷水尽,不要用os.exit()这样的函数,

python可能无法正常完成数据操作及资源回收。

最好是利用函数的返回值自然退出线程,高端些~


from concurrent.futures import ThreadPoolExecutor

executor = ThreadPoolExecutor(max_workers=xxx)

for data in executor.map(cmd_run, subserver, [deploy_type] * sub_len, [cmd] * sub_len,
                         [current_user_set] * sub_len, [percent_value] * sub_len,
                         [app_name] * sub_len, [deployversion_id] * sub_len, [auto_deploy_id] * sub_len):
    mylog.debug("cmd %s result is: " % cmd + str(data))
    if not data:
        return False





目录
相关文章
|
6天前
|
Python
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
|
9天前
|
负载均衡 Java 调度
探索Python的并发编程:线程与进程的比较与应用
本文旨在深入探讨Python中的并发编程,重点比较线程与进程的异同、适用场景及实现方法。通过分析GIL对线程并发的影响,以及进程间通信的成本,我们将揭示何时选择线程或进程更为合理。同时,文章将提供实用的代码示例,帮助读者更好地理解并运用这些概念,以提升多任务处理的效率和性能。
|
25天前
|
API Python
探索Python中的多线程编程
探索Python中的多线程编程
39 5
|
3天前
|
数据采集 Linux 调度
Python之多线程与多进程
Python之多线程与多进程
10 0
|
4天前
|
并行计算 关系型数据库 MySQL
30天拿下Python之使用多线程
30天拿下Python之使用多线程
14 0
|
8天前
|
存储 算法 Java
关于python3的一些理解(装饰器、垃圾回收、进程线程协程、全局解释器锁等)
该文章深入探讨了Python3中的多个重要概念,包括装饰器的工作原理、垃圾回收机制、进程与线程的区别及全局解释器锁(GIL)的影响等,并提供了详细的解释与示例代码。
15 0
|
8天前
|
安全 Java 调度
python3多线程实战(python3经典编程案例)
该文章提供了Python3中多线程的应用实例,展示了如何利用Python的threading模块来创建和管理线程,以实现并发执行任务。
12 0
|
2月前
|
调度 Python
Python 中如何实现多线程?
【8月更文挑战第29天】
52 6
|
11天前
|
并行计算 API 调度
探索Python中的并发编程:线程与进程的对比分析
【9月更文挑战第21天】本文深入探讨了Python中并发编程的核心概念,通过直观的代码示例和清晰的逻辑推理,引导读者理解线程与进程在解决并发问题时的不同应用场景。我们将从基础理论出发,逐步过渡到实际案例分析,旨在揭示Python并发模型的内在机制,并比较它们在执行效率、资源占用和适用场景方面的差异。文章不仅适合初学者构建并发编程的基础认识,同时也为有经验的开发者提供深度思考的视角。
|
2月前
|
数据采集 Java Python
python 递归锁、信号量、事件、线程队列、进程池和线程池、回调函数、定时器
python 递归锁、信号量、事件、线程队列、进程池和线程池、回调函数、定时器
下一篇
无影云桌面