我有一个python脚本需要在最快的时间内在Linux命令行中运行数千个命令。所以我想将每个命令分成不同的线程/进程,单独运行它们,然后在我所有机器的核心之间分配负载。
我尝试过使用线程和多处理模块,以及subprocess.Popen,但我似乎无法强制python运行它的进程,因此也就是不同内核上的命令。
有人可以帮助和/或推荐我这样做的最佳方法吗?
这是我目前的代码:
while True:
# grab next section of data
data = file.read(bytes_to_read)
cmd_stream += data
# remove dead processes
if len(processes) >= max_processes:
while (processes) and (processes[0].poll() is not None):
del processes[0]
while len(processes) < max_processes:
# get new command, break if none
new_cmd, cmd_stream = get_next_cmd(cmd_stream)
if not new_cmd:
break
new_cmds = turn_args_into_cmd(new_cmd)
for args in new_cmds:
new_process = subprocess.Popen(args)
processes.append(new_process)
我还尝试使用以下代码替换最后一部分:
p = Process(target=run_cmd, args=(new_cmd,))
processes.append(p)
p.start()