将文件行读入并行 python 脚本的 xargs
Reading lines of file into xargs for parallel python script
我试图通过使用文件的行作为 python 脚本的参数来并行执行 python 脚本。该文件名为 experiments.txt
,可能如下所示:
--x_timesteps 3 --y_timesteps 3 --exp_path ./logs
--x_timesteps 4 --y_timesteps 3 --exp_path ./logs
--x_timesteps 5 --y_timesteps 3 --exp_path ./logs
--x_timesteps 6 --y_timesteps 3 --exp_path ./logs
我想使用 xargs 加快处理速度;但是,我不知道如何使用文件输入来做到这一点。 如何通过逐行读取文件并通过管道传输到 xargs 来并行化 python 脚本?
我知道我可以用一个简单的 for 循环来解决这个问题;但是,我需要知道如何使用文件输入。
在相应目录的命令行中键入此内容,
for x in {3..6}; \
do printf '%s[=12=]' "--x_timesteps=${x}" "--y_timesteps=3" "--exp_path=./logs"; \
done | xargs -0 -n 3 -P 8 python script.py
for 循环式并行化源自
的答案
恕我直言,使用 GNU Parallel 更简单、更可控,如下所示:
parallel --dry-run --colsep ' ' python script.py :::: experiments.txt
您可以简单地添加或删除 --dry-run
进行调试。您可以为进度报告添加 --eta
或 --bar
。您可以跨多个主机分配任务。您可以轻松地进行 fail/retry 处理。您可以从参数中提取基本名称、文件名、目录名称。您可以对参数进行排列。等等。
我试图通过使用文件的行作为 python 脚本的参数来并行执行 python 脚本。该文件名为 experiments.txt
,可能如下所示:
--x_timesteps 3 --y_timesteps 3 --exp_path ./logs
--x_timesteps 4 --y_timesteps 3 --exp_path ./logs
--x_timesteps 5 --y_timesteps 3 --exp_path ./logs
--x_timesteps 6 --y_timesteps 3 --exp_path ./logs
我想使用 xargs 加快处理速度;但是,我不知道如何使用文件输入来做到这一点。 如何通过逐行读取文件并通过管道传输到 xargs 来并行化 python 脚本?
我知道我可以用一个简单的 for 循环来解决这个问题;但是,我需要知道如何使用文件输入。
在相应目录的命令行中键入此内容,
for x in {3..6}; \
do printf '%s[=12=]' "--x_timesteps=${x}" "--y_timesteps=3" "--exp_path=./logs"; \
done | xargs -0 -n 3 -P 8 python script.py
for 循环式并行化源自
恕我直言,使用 GNU Parallel 更简单、更可控,如下所示:
parallel --dry-run --colsep ' ' python script.py :::: experiments.txt
您可以简单地添加或删除 --dry-run
进行调试。您可以为进度报告添加 --eta
或 --bar
。您可以跨多个主机分配任务。您可以轻松地进行 fail/retry 处理。您可以从参数中提取基本名称、文件名、目录名称。您可以对参数进行排列。等等。