在Bash / Shell中进行并行处理的有效方法?

阿伦

我有一个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节省时间来完成任务?

奥莱·丹吉(Ole Tange)

您正在寻找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并行调度

安装

如果未打包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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在bash中进行计算的有效方法

来自分类Dev

在bash中进行计算的有效方法

来自分类Dev

从bash文件中读取key = value对的有效方法,每一行都可以对其进行处理

来自分类Dev

让python从bash停止(受控)的有效方法(/ tmp / stop?)

来自分类Dev

使用bash删除旧文件的最有效方法

来自分类Dev

让python从bash停止(受控)的有效方法(/ tmp / stop?)

来自分类Dev

括号在bash shell本身有效,但在bash脚本中无效

来自分类Dev

括号在bash shell本身有效,但在bash脚本中无效

来自分类Dev

bash有效的文件解析

来自分类Dev

bash 中的有效输入

来自分类Dev

无法找到带有默认shell作为bash的常规文件,但在ksh时有效

来自分类Dev

bash 脚本 - 如何编写有效的 case 语句来处理多个条件

来自分类Dev

命令在bash shell中有效,但不能在别名中起作用

来自分类Dev

在 Ruby 中执行命令的 Bash 语法错误,但它在 shell 中有效

来自分类Dev

在Mongodb中进行聚合的有效方法

来自分类Dev

在Mongodb中进行聚合的有效方法

来自分类Dev

并行bash

来自分类Dev

在bash或zsh脚本中使用所有内核的有效方法

来自分类Dev

在bash / shell中进行url打印期间的未绑定变量

来自分类Dev

意外的“(”-Shell脚本在带有bash的CentOS上有效,但在Ubuntu上不起作用

来自分类Dev

转换bash或R中每N个字符串的有效方法

来自分类Dev

Bash:运行命令的最有效方法(先存在命令“ might”或“ might not”)

来自分类Dev

在bash脚本中测试多个值的最有效方法是什么

来自分类Dev

在Bash中搜索文本文件中多个术语的最有效方法

来自分类常见问题

Bash脚本并行处理有限数量的命令

来自分类Dev

Bash-找不到命令,但仍然有效

来自分类Dev

在bash中将无效的json转换为有效的json

来自分类Dev

Bash脚本有效,但从crontab执行时无效

来自分类Dev

为什么这种bash构造有效?(参数替换)

Related 相关文章

  1. 1

    在bash中进行计算的有效方法

  2. 2

    在bash中进行计算的有效方法

  3. 3

    从bash文件中读取key = value对的有效方法,每一行都可以对其进行处理

  4. 4

    让python从bash停止(受控)的有效方法(/ tmp / stop?)

  5. 5

    使用bash删除旧文件的最有效方法

  6. 6

    让python从bash停止(受控)的有效方法(/ tmp / stop?)

  7. 7

    括号在bash shell本身有效,但在bash脚本中无效

  8. 8

    括号在bash shell本身有效,但在bash脚本中无效

  9. 9

    bash有效的文件解析

  10. 10

    bash 中的有效输入

  11. 11

    无法找到带有默认shell作为bash的常规文件,但在ksh时有效

  12. 12

    bash 脚本 - 如何编写有效的 case 语句来处理多个条件

  13. 13

    命令在bash shell中有效,但不能在别名中起作用

  14. 14

    在 Ruby 中执行命令的 Bash 语法错误,但它在 shell 中有效

  15. 15

    在Mongodb中进行聚合的有效方法

  16. 16

    在Mongodb中进行聚合的有效方法

  17. 17

    并行bash

  18. 18

    在bash或zsh脚本中使用所有内核的有效方法

  19. 19

    在bash / shell中进行url打印期间的未绑定变量

  20. 20

    意外的“(”-Shell脚本在带有bash的CentOS上有效,但在Ubuntu上不起作用

  21. 21

    转换bash或R中每N个字符串的有效方法

  22. 22

    Bash:运行命令的最有效方法(先存在命令“ might”或“ might not”)

  23. 23

    在bash脚本中测试多个值的最有效方法是什么

  24. 24

    在Bash中搜索文本文件中多个术语的最有效方法

  25. 25

    Bash脚本并行处理有限数量的命令

  26. 26

    Bash-找不到命令,但仍然有效

  27. 27

    在bash中将无效的json转换为有效的json

  28. 28

    Bash脚本有效,但从crontab执行时无效

  29. 29

    为什么这种bash构造有效?(参数替换)

热门标签

归档