我有一个Input.txt
包含的文本文件()domains
,总计约为35 Millions domains
。
#Input.txt
google.com
cnn.com
bbc.com
........
现在,我有一个python脚本来检查文本文件(Input.txt)中与之关联的每个域的状态代码。对于较小的套装,我会
for i in $(cat Input.txt);do python status_check.py $i;done > out_file.txt
如果我以这种方式处理,检查所有3500万个域的状态代码可能会花费一些时间。
我对并行处理不熟悉。有人可以帮我吗,如何通过使用shell / bash / any节省时间来完成任务?
您正在寻找GNU Parallel:
cat Input.txt | parallel -j 100 python status_check.py > out_file.txt
GNU Parallel是一个通用的并行器,使您可以轻松地在具有ssh访问权限的同一台计算机或多台计算机上并行运行作业。它通常可以替换for
循环。
如果要在4个CPU上运行32个不同的作业,并行化的直接方法是在每个CPU上运行8个作业:
相反,GNU Parallel在完成时会产生一个新进程-使CPU保持活动状态,从而节省时间:
安装
如果未打包GNU Parallel进行分发,则可以进行个人安装,不需要root访问。这样做可以在10秒内完成:
$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 67bd7bc7dc20aff99eb8f1266574dadb
12345678 67bd7bc7 dc20aff9 9eb8f126 6574dadb
$ md5sum install.sh | grep b7a15cdbb07fb6e11b0338577bc1780f
b7a15cdb b07fb6e1 1b033857 7bc1780f
$ sha512sum install.sh | grep 186000b62b66969d7506ca4f885e0c80e02a22444
6f25960b d4b90cf6 ba5b76de c1acdf39 f3d24249 72930394 a4164351 93a7668d
21ff9839 6f920be5 186000b6 2b66969d 7506ca4f 885e0c80 e02a2244 40e8a43f
$ bash install.sh
有关其他安装选项,请参见http://git.savannah.gnu.org/cgit/parallel.git/tree/README
了解更多
查看更多示例:http : //www.gnu.org/software/parallel/man.html
观看介绍性视频:https : //www.youtube.com/playlist? list =PL284C9FF2488BC6D1
浏览本教程:http : //www.gnu.org/software/parallel/parallel_tutorial.html
注册电子邮件列表以获得支持:https : //lists.gnu.org/mailman/listinfo/parallel
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句