#!/bin/bash
data_dir=./all
for file_name in "$data_dir"/*
do
echo "$file_name"
python process.py "$file_name"
done
例如,此腳本在“for”回圈中按順序處理目錄中的檔案。是否可以同時啟動多個 process.py 實體來處理檔案?我想在 shell 腳本中執行此操作。
uj5u.com熱心網友回復:
最好使用os.listdir和subprocess.Popen來啟動新行程。
uj5u.com熱心網友回復:
如果還需要的話,我還有另一種可能。它使用該screen命令通過提供的命令創建一個新的分離行程。
這是一個例子:
#!/bin/bash
data_dir=./all
for file_name in "$data_dir"/*
do
echo "$file_name"
screen -dm python process.py "$file_name"
done
uj5u.com熱心網友回復:
使用GNU Parallel,像這樣:
parallel python process.py {} ::: all/*
它將并行運行 N 個作業,其中 N 是您擁有的 CPU 內核數,或者您可以指定-j4僅在 4 個上運行。
很多很多選項:
- 記錄,
- 拆分/分塊輸入,
- 標記/分離輸出,
- 驚人的作業開始,
- 按摩輸入引數,
- 失敗并重試處理,
- 將作業和資料分發到其他機器
- 等等...
嘗試放入[gnu-parallel]StackOverflow 搜索框。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/473092.html
上一篇:xargs按空格分割字串
