【发布时间】:2015-11-01 13:33:28
【问题描述】:
我想在不给cpu太多工作的情况下并行运行多个进程,以便cpu也可以做其他工作。
在 python 中,我将使用 os.system 来调用一些二进制文件。这些调用是独立的,可以并行。但是这些二进制文件可能会运行不同的时间长度。
例如,我想做的是,始终保持其中 8 个并行运行,如果有人提前退出,则启动另一个。
我现在做的是这样的:
count = 0
for f in files:
count = count + 1
cmd = exe
if (count != 8):
cmd = cmd + " &"
else:
count = 0
os.sytem(cmd)
但是如果没有 & 的 cmd 运行时间过长或过短,这将是不理想的。
我也试过多处理模块,
p=Pool(8)
print(p.map(f,list_of_args))
但在这种情况下,我大部分时间都没有并行运行 8 个进程。由于其中一些提前退出。
不需要同步。
我有 16 个 cpu 核心,我想要其中的一半(8 个进程并行运行)
【问题讨论】:
标签: python multithreading process parallel-processing multiprocessing