如何让python在不同的内核上运行多个进程/线程?

时间:2016-12-22 14:06:33

标签: python multithreading subprocess multiprocessing

我有一个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()

0 个答案:

没有答案