我正在使用 GNU 并行并行运行多个 python 脚本,每个脚本可能需要几分钟才能完成。 脚本将其进度打印到标准输出。
示例脚本.py
print('doing something...')
do_something()
print('doing another thing...')
do_another_thing()
我的并行命令仅将输出保存到结果目录树
parallel --lb --results results < parallel-commands.txt
parallel-commands.txt的内容
python3 script.py --once
python3 script.py --twice
我想在准备好时打印输出,我在网上查找并找到了并行的
--lb
选项,这对我很有帮助,但我也希望并行将输出写入文件以及标准输出,有点像tee
做什么。有什么办法可以实现吗?
目前 GNU Parallel 仅支持单个输出流。换句话说,您无法在标准输出和文件中获得输出。
所以你需要像这样手动完成:
#!/bin/bash
doit() {
echo $1 start
sleep $1
echo $1 end
}
export -f doit
parallel --lb 'doit {} | tee {#}.out' ::: 3 2 1
但是,这是一项正在考虑中的功能,因此很高兴知道至少会有 1 个用户使用它:)