我試圖通過使用檔案的行作為 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\0' "--x_timesteps=${x}" "--y_timesteps=3" "--exp_path=./logs"; \
done | xargs -0 -n 3 -P 8 python script.py
for-loop 風格的并行化源自對“Using xargs for parallel Python scripts”的回答
uj5u.com熱心網友回復:
恕我直言,使用GNU Parallel更簡單,更可控,如下所示:
parallel --dry-run --colsep ' ' python script.py :::: experiments.txt
您可以簡單地添加或洗掉--dry-run以進行除錯。您可以添加--eta或--bar獲取進度報告。您可以在多個主機之間分配任務。您可以輕松地進行失敗/重試處理。您可以從引數中提取基本名稱、檔案名、目錄名稱。您可以對引數進行排列。等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/348047.html
上一篇:Bash查找丟失的檔案
