python 线程池 map_python ThreadPoolExecutor线程池使用-阿里云开发者社区

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值