【发布时间】:2017-01-26 09:36:32
【问题描述】:
我刚刚写了一个涉及多线程的python脚本,比如:
python myScript.py -cpu_n 5 -i input_file
为了为我的数百个输入文件运行命令,我正在为每个文件生成一个命令列表 (commands.list):
python myScript.py -cpu_n 5 -i input_file1
python myScript.py -cpu_n 5 -i input_file2
python myScript.py -cpu_n 5 -i input_file3
...
我正在尝试使用命令“parallel”和三台不同机器的 10 个 CPU 来安排它们:
parallel -S 10/$server1 -S 10/$server2 -S 10/$server3 < commands.list
我的问题是:并行命令在每台服务器上使用的最大 CPU 数是多少?是 5*10=50 还是只有 10 个 CPU?
【问题讨论】:
-
没有代码很难说。
-
首先,要注意区分CPUs和cores,单个CPU可能有8个或更多核。其次,您需要小心 jobs 和 cores - 您可以创建一个可能会四处游荡并在不同时间在不同核心上执行的作业 - 想想 " CPU/核心亲和性”。理论上,一项作业可以在其生命周期的某个阶段在 10 个 CPU 中的每一个上运行。
-
如果 commands.list 如此简单,您可能只需让 GNU Parallel 生成它:parallel python myScript.py -cpu_n 5 -i ::: input_file*;如果命令非常复杂,请使用 bash 函数:gnu.org/software/parallel/…
标签: python multithreading gnu-parallel