我正在使用xargs
python脚本来处理大约3000万个小文件。我希望可以xargs
用来并行化该过程。我正在使用的命令是:
find ./data -name "*.json" -print0 |
xargs -0 -I{} -P 40 python Convert.py {} > log.txt
基本上,Convert.py
将读取一个小的json文件(4kb),进行一些处理并写入另一个4kb文件。我在具有40个CPU内核的服务器上运行。并且此服务器上没有其他正在运行的CPU密集进程。
通过监视htop(顺便说一句,还有其他监视CPU性能的好方法吗?),我发现它的-P 40
速度不如预期的快。有时,所有内核将冻结并在3-4秒内几乎减少为零,然后恢复到60-70%。然后,我尝试将并行进程的数量减少到-P 20-30
,但是仍然不是很快。理想的行为应该是线性加速。关于并行使用xargs有什么建议吗?