爲每個文件在目錄程序並行執行我怎麼可以把所有的文件工作,在目錄中使用bash幾個CPU,而無需使用並行命令用於在bash
Q
用於在bash
1
A
回答
2
NR_CPUS=3
format=.jpg
job_count=0
for f in *."$format"; do
mycommand "$f" &
job_count=$((job_count+1))
if [ "$job_count" -eq $NR_CPUS ]; then
wait
job_count=0
fi
done
1
您可以生成每個一個單獨的進程文件(這是平行做什麼...更聰明)
for f in *.jpg; do
some_program_or_shell_function $f &
done
1
與find
命令xargs
命令一起經常在這種情況下使用;像這樣:
find . -maxdepth 1 -type f -print0 | xargs -0 -n 1 -P 4 echo
你需要在你想同步進程(通常是相同的物理內核在您的計算機中CPU密集型任務的數量)和echo
用的最大數量,以取代4
您想要在這些文件上運行的程序的實際名稱。
選項maxdepth
防止find
從目錄(如果你想遞歸刪除)遞歸,以及對-print0
/-0
是那裏在find
(通常輸出安全處理分詞,以防止文件名與空間他們)
相關問題
- 1. 用於在bash
- 2. Windows bash相當於在bash中啓動
- 3. 在bash中,<<<用於什麼?
- 4. Bash - 對於我在貓?
- 5. 對於bash
- 6. preg_match_all等同於BASH?
- 7. python的對於bash
- 8. 調用在bash
- 9. 用於ETL過程的KornShell或Bash Shell?
- 10. Bash別名不適用於Python腳本
- 11. Bash,用於遞歸的相同變量
- 12. 條件不適用於bash cgi
- 13. 我的git bash不適用於github
- 14. 用於SSH的Bash/Expect腳本
- 15. 用於安全傳輸的Bash腳本
- 16. 用於運行命令的Bash腳本
- 17. 用於bash的圖形調試器
- 18. Bash - 用於「$ @」中的文件;做
- 19. 用於解析參數的bash工具
- 20. 當數在bash處理[[]]優於時(())
- 21. 關於在bash腳本開關罩
- 22. 相當於在PowerShell中bash「expect」
- 23. 儘管文件存在於bash中
- 24. PHP相當於退出狀態在bash
- 25. 函數不適用於sh(但適用於bash)
- 26. 在bash中使用NULL字節(用於緩衝區溢出)
- 27. PHP的preg_quote等價於Bash?
- 28. bash相當於Python的os.path.normpath?
- 29. 關於Makefile的bash shell
- 30. Bash像PIPESTATUS相當於perl
如果你有1000個文件,只有2個cpus,該怎麼辦? – sherif 2014-09-19 12:23:21
1000個進程完全沒有問題。這取決於過程的作用。它需要很多CPU嗎?那麼應該限制它的核心數量。如果它是IO限制的,那麼你不需要限制進程的數量(你應該簡單地測試你是否從並行中受益)。 – Sebastian 2014-09-19 12:25:02
即使在CPU限制作業的情況下,限制進程數量的決定取決於您是否關心*部分*作業儘快完成,或者只是儘快完成*整理*整理。在後一種情況下,更容易產生它們,並讓操作系統擔心在可用內核上安排它們。 – chepner 2014-09-19 12:27:31