一个将任务分配到固定数量的进程中的工具,并收集输出,以更好地利用多进程。
项目描述
Disttask是一个提供将任务分配到固定数量的进程并收集输出的工具,以更好地利用多进程。
使用它与现有的单线程/进程工具和脚本一起使用,以充分利用您的计算机资源。
提供将任务分配到固定数量的进程的能力,以更好地利用多进程。
用法
用法:disttask [cmd] [并发任务] [参数集]
在[cmd]中使用%s来指定参数的位置,使用%d来指定管道号。
要运行命令列表(作业服务器),将“%s”用作完整命令。
如果需要字面意义上的%s或%d,请使用%%s或%%d。
选项
-nc或–no-collate 默认情况下,输出将保留到任务完成,因此输出不会混合。
通过提供“-nc”或“–no-collate”,而不是在任务完成前保留输出,
从任何正在运行的任务接收的每一行都会打印出来,前面带有方括号中的argset(例如,“[arg1] Some message”)
从stdin获取参数集
如果argset是“–”,则将从stdin读取argset项,而不是在命令行中提供。
执行立即开始,因此您可以使用disttask作为作业管理器,另一个进程在项目可用时提供项目。
。
最大并发数
您可以使用“0”或“MAX”作为“并发任务”参数,以同时执行argset中的所有项目。
示例用法
disttask “ssh root@%s hostname” 3 host1 host2 host3 host4 host5 host6 # 同时连接到6个主机,每次3个。
disttask版本2.2.0
并发
应用程序最多运行“并发任务”数量的进程(最好将此数字与可用于此的处理器总数匹配 - 1)。它捕获stdout和stderr,以确保输出不会在应用程序之间交织。
输出
每个任务完成后,输出将完整写入,除非提供了“-nc”或“–no-collate”参数,在这种情况下,输出将一出现就打印,每行前以方括号中的项目名称为前缀。
指定命令
每个命令应指定一个“%s”,每个参数将进入那里(每个应用程序来自@argset的一个参数)。要提供整个命令,请简单地使用“%s”作为“cmd”,并在您的“argset”中提供命令。命令由shell执行,因此可以包含shell表达式。
“%d”也作为管道号可用,可以用来区分运行中的进程。
您还可以通过提供‘--’作为argset,将程序或文件管道输出到disttask。Disttask将运行并从stdin读取,将每行作为argset项处理,并在stdin关闭且所有子进程完成后终止。
示例
使用disttask并行连接到各种主机并执行命令
disttask “echo -n ‘pipe %d: ‘ && ssh root@%s hostname” 2 “host1” “host2” “host3” “host4”
管道0: host1
管道1: host2
管道0: host3
管道1: host4
相同的示例,使用“no-collate”选项
disttask “echo -n ‘pipe %d: ‘ && ssh root@%s hostname” 2 “host1” “host2” “host3” “host4”
[host1] 管道0: host1
[host2] 管道1: host2
[host3] 管道0: host3
[host4] 管道1: host4
在子目录中的所有Python文件上运行pyflakes,使用10个并发进程(需要shopt -s globstar。注意使用的是反引号,而不是单引号。)
disttask “pyflakes %s” 10 echo **/*.py
用法:disttask [cmd] [并发任务] [参数集]
在[cmd]中指定%s,其中您希望参数进入。使用%d作为管道号。要运行命令列表(作业服务器),请确保‘%s’是您的完整命令。
选项
- -nc或–no-collate 默认情况下,输出将保留到任务完成,因此输出不会混合。
通过提供“-nc”或“–no-collate”,而不是来自任何正在运行的任务的每一行都打印,前以方括号中的argset为前缀(例如,“[arg1] Some message”)
从stdin获取参数集
如果argset是“–”,则将从stdin读取argset项,而不是在命令行中提供。执行立即开始,因此您可以使用disttask作为作业管理器,另一个进程在项目可用时提供项目。
最大并发数
您可以使用“0”或“MAX”作为“并发任务”参数,以同时执行argset中的所有项目。
示例用法
disttask “ssh root@%s hostname” 3 host1 host2 host3 host4 host5 host6 # 同时连接到6个主机,每次3个。
disttask版本2.1.1