【发布时间】:2016-04-14 05:24:51
【问题描述】:
我有一个 python 脚本 domaincheck.py 和一个 json 文件 domain.json 我可以查找任何 domainname 并给我查询域的 name。
#Usage 1 : python domaincheck.py cnn.com
#Usage 2 : python domaincheck.py bbc.com
#Result 1 : CNN
#Result 2: BBC
现在,我有一个输入文件 set_3.txt,它包含大约 65000 行域。我为批处理编写了一个小的 shell 逻辑。
$for i in $(cat set_3.txt); do python domaincheck.py $i;done
我在六个小时前运行了这个脚本,到现在它只处理了大约 20,000 个域。
如何使用 Bash/shell 有效地做到这一点并减少时间消耗? bash 中是否有任何并行执行方法可以用来最小化处理时间?
【问题讨论】:
-
看看GNU parallel。
-
谢谢赛勒斯。也会看看 GNU 并行方法。
-
要小心——如果您几乎同时启动 65,000 个查询,您可能会超载 DNS 服务器的容量。尽量保持200个左右的批次。
-
在 Python 中执行循环比在 shell 中循环要高效得多(或并行,或 xargs)。在这里启动 Python 解释器将是您的大部分成本——Python 在标准库中拥有自己的并行机制。