python任务队列框架_超简便Python任务队列:huey

Why其实这种需求很常见 。在跑仿真的时候,为了得到多组数据以供统计分析比对,我们需要将一些程序按照不同参数配置运行多次。为了利用现代计算机的多核性能,我们常常以多进程的方式来运行这些仿真程序以最大化利用硬件资源。这是我开始使用huey的时候的需求,但是事实上huey的应用远不止于此。和celery类似,你可以把huey用来管理和调度异步任务,或者是用来运行周期性任务以及定时服务。我最开始的方法是...
摘要由CSDN通过智能技术生成

Why

其实这种需求很常见 。在跑仿真的时候,为了得到多组数据以供统计分析比对,我们需要将一些程序按照不同参数配置运行多次。为了利用现代计算机的多核性能,我们常常以多进程的方式来运行这些仿真程序以最大化利用硬件资源。

这是我开始使用huey的时候的需求,但是事实上huey的应用远不止于此。和celery类似,你可以把huey用来管理和调度异步任务,或者是用来运行周期性任务以及定时服务。

我最开始的方法是写了一个工具脚本,在这个脚本内部开了一个线程池,然后在将计算任务提交给这个线程池。但是这样有一个问题:如果我已经开始了一组计算任务,而我又希望再增加一组任务,我只能等前一组任务完全结束之后才能再开始下一组。不然前后两组任务会同时开始运行,争抢计算资源,而不是按照我设想的任务的队列的模式。

设想一个具体的例子。我的计算机是8核的,而我的一组计算任务需要以不同的参数运行16次。通过在进程内创建一个8线程容量的线程池,我可以让这16个任务进入队列序次执行,同时执行的现成数不超过8。倘若前一次的16个任务还剩余4个未运行,而我又要再增加16个计算任务,此时以这种模式,我无法将新增的任务放到前一个进程的任务队列里。如果直接强行运行,则会导致前一组任务的4个线程在运行,而后一个任务会调度出8个线程,总计12个线程,这并不能最优地使用多核。

那么这个时候我就需要一个任务队列系统来管理我的计算任务了:每次我要运行一组任务的时候,我将计算任务提交给任务队列系统,由这个系统来调度worker(worker的数量常常设定为CPU的线程数)执行。简而言之,任务队列系统提供了跨进程的队列。

其实之前我用过celery这个任务队列框架,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值