我試圖通過使用文件的行作為 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”的回答
恕我直言,使用GNU Parallel更簡單,更可控,如下所示:
parallel --dry-run --colsep ' ' python script.py :::: experiments.txt
您可以簡單地添加或刪除--dry-run
以進行調試。您可以添加--eta
或--bar
獲取進度報告。您可以在多個主機之間分配任務。您可以輕鬆地進行失敗/重試處理。您可以從參數中提取基本名稱、文件名、目錄名稱。您可以對參數進行排列。等等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句