提问人:chr218 提问时间:11/22/2020 最后编辑:wjandreachr218 更新时间:11/22/2020 访问量:62
Python 3.6 EOF 错误和使用 xargs 并行化脚本
Python 3.6 EOF error and using xargs to parallelize scripts
问:
我正在尝试使用 xargs 在 bash 上并行执行许多 python 脚本。但是,我需要使用 bash“for loop”的标准输出作为我的 python 脚本的标准输入。
我的 bash 脚本:
#Collect number of CPUs
cpus=$( ls -d /sys/devices/system/cpu/cpu[[:digit:]]* | wc -w )
#Collect data.input directories and pass to xargs to execute python scripts.
arr=$(find . ! -path . -mindepth 2 -type d)
DIR_present=$(pwd)
for dir in $arr; do
cd $dir
printf '%s\0' "$(pwd)/data.input"
cd $DIR_present
done | xargs -0 -x -n 1 --max-procs=$cpus python Foo.py
Foo.py 手动执行时可以完美运行。但是,执行此 bash 脚本会导致每个“data.input”出现“EOF”错误:
Traceback (most recent call last):
File "Foo.py", line 254, in <module>
data_file = input()
EOFError: EOF when reading a line
谢谢!
改成不起作用。
input()
raw_input()
正在收集正确的路径。我已经“回显”了这些路径,并用它们手动执行了 Foo.py。
data.input
答: 暂无答案
评论