我正在使用 gnu-parallel 在千兆网络中的多台计算机上并行运行多个 python 脚本。
正在处理的文件位于我的主节点上的 tmpfs(RAM)文件夹中。当我启动并行进程时,我可以看到远程节点中的所有核心都在工作,但我的主节点保持空闲状态。
我的平行线如下所示:
parallel --workdir ./netshare --filter-hosts -S :,192.168.88.222\
'myscript.py {.}.shp output_{.}.shp input.shp' ::: tile_{1..445}.shp
我尝试过反转 IP 地址 192.168.88.222 的顺序:结果相同。
我尝试过仅在本地主节点上运行,除了没有可用的远程节点的警告之外,所有 8 个本地线程都开始工作。
我以为可能是网络延迟,但根本没有启动任何 Python 脚本!而在远程主机上,我看到四个脚本都在运行,没有任何问题。
根据 Ole 的评论,我使用 bzip2 测试了该问题,命令如下:
parallel -S $SERVER1,: 'cd /path/to/mounted/network/share && cp largefile.avi file{1}.avi && bzip2 -v file{1}.avi && rm file{1}.avi.bz2' ::: {1..100}
测试完全符合预期。所有主机的所有核心都通过 cp 和 bzip 启动。所以猜测问题出在我的 python 脚本上。