gpt4 book ai didi

python - 使用 GNU parallel 并行化多线程命令

转载 作者:行者123 更新时间:2023-12-02 03:07:21 27 4
gpt4 key购买 nike

我刚刚写了一个涉及多线程的 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
...

我正在尝试使用“并行”命令和三台不同机器的 10 个 CPU 来安排它们:

   parallel -S 10/$server1 -S 10/$server2 -S 10/$server3 < commands.list

我的问题是:使用并行命令在每台服务器上使用的最大 CPU 数量是多少?是 5*10=50 还是 10 个 CPU?

最佳答案

来自 man parallel:

   --jobs N
-j N
--max-procs N
-P N Number of jobslots on each machine. Run up to N
jobs in parallel. 0 means as many as possible.
Default is 100% which will run one job per CPU
core on each machine.


-S
[@hostgroups/][ncpu/]sshlogin[,[@hostgroups/][ncpu/]sshlogin[,...]]
:
GNU parallel will determine the number of CPU
cores on the remote computers and run the number
of jobs as specified by -j. If the number ncpu
is given GNU parallel will use this number for
number of CPU cores on the host. Normally ncpu
will not be needed.

因此您的命令将在每台服务器上并行运行多达 10 个作业。

您的每个命令是否会使用 5 个 CPU 内核尚不清楚。如果您的每个命令都使用 5 个内核,则每个服务器将使用 50 个内核,在这种情况下,我建议您不要使用 ncpu/server 语法,而是使用:

parallel -j 20% -S $server1,$server2,$server3 < commands.list

这样您就可以混合使用具有不同内核数的服务器,GNU Parallel 将并行启动其中的 1/5。

关于python - 使用 GNU parallel 并行化多线程命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41870486/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com