Python 脚本的并行处理



我有一个python脚本,它一次接受一个输入并处理它。 我想同时使用不同的输入并行运行脚本。喜欢 50 或 100 次,但具有来自 txt 文件的不同输入馈送。

我执行这样的脚本:

python script.py -d url1 

然后

python script.py -d url2

然后

python script.py -d url3

而不是一次输入一个参数,我想从文本文件中输入这些 URL 并并行处理它们。

我尝试使用 gnu-parallel 在 bash shell 中运行这个脚本,但 bash 脚本不运行 python shell,因此出现错误。

代码如下---

#!/usr/bin/env bash
doit() {
host="$1"
~/script/python script1.py -d $host
}
export -f doit
cat "$1" | parallel -j50 -k doit 

TXT文件的内容---

url1.com
url2.com
url3.com
--------
url1000.com
url_any.com

使用GNU Parallel,像这样:

parallel --dry-run -a arguments.txt python script.py

假设您的参数是"arguments.txt"中每行一个。

如果需要,请使用parallel -k ...使输出保持有序。

使用parallel --bar ...获取进度条。

GNU Parallel的另一种方法是使用 Python子进程重复执行命令。

这是一个使用 Python 2.7 的示例。

首先,代码需要读取文本文件以将所有参数分配给列表。

with open('<Arguments text file location>') as f:
arguments = f.read().splitlines()

然后,使用循环通过子进程为每个参数运行一次命令。

import subprocess
procs = []
for argument in arguments:
cmd = 'python script.py %(argument)' % {'argument': argument}
procs.append(
subprocess.Popen(cmd, shell=True)
)
exit_codes = [p.wait() for p in procs]

相关内容

  • 没有找到相关文章