python - Python批处理子进程,进程不均匀
问题描述
我想将N个子进程作为批处理大小M执行。我在之前的 SO 线程中使用了这段代码作为起点:
def chunks(l, n):
"""Yield successive n-sized chunks from l."""
for i in xrange(0, len(l), n):
yield l[i:i+n]
for next_batch in chunks(commands, 5):
# Start the next few subprocesses
subps = [subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for cmd in next_batch]
# Wait for these to finish
for subp in subps:
subp.wait()
但是,我如何处理批次中不需要相同时间来完成的流程(即,不均匀的流程)?这段代码仍然有效,但它会等到一个批次中的所有进程都完成后再执行下一个批次。
有没有办法允许下一批中的进程在旧批次中的某些进程尚未完成时启动?虽然在任何给定时间不超过M的整体批量大小
解决方案
使用队列: https ://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue
您将要在队列中处理的数据推送到队列中,然后所有工作人员都从队列中拉出并执行您需要的操作。
推荐阅读
- python - 使用混合浓度作为线性优化的约束
- python - Python:将mxn数组旋转到任意角度
- angularjs - 如何更改具有多个数据集的角度图表和图表 js 条形图上的条形颜色?
- javascript - VueJS , LoDash debounce 监视整个表单
- python - Python:DataFrame.melt - 如何选择一系列列作为标识符变量?
- python - 是否可以从应用程序创建和连接 Django 数据库?
- c# - Json.Net - 如何在不明确的 JSON 中指定反序列化类型
- ios - 我在哪里正确初始化我的 MTLCommandBuffer?
- python - 读取文件元数据Python时权限不足
- jira - 查询 JIRA 以生成不同类型的问题计数