我只想做的是做一個等待釋放鎖。開始在bash中同步的程序
我有例4(因爲我有4個核心),每個工作在一個項目的一部分相同的腳本,每個腳本看起來像這樣:
#!/bin/bash
./prerenderscript $1
scriptsync step1 4
./renderscript $1
scriptsync step2 4
./postprod $1
當我運行主腳本調用四個腳本,我希望每個腳本都能獨立工作,但是在某些時候,我希望每個腳本都在等待對方,因爲下一部分需要第一部分的所有數據。
現在我使用了一些邏輯,比如爲每個進程創建的文件或文件的數量,以及它們存在與另一個進行測試的情況。
我也得到了主意,用一個makefile,並有
prerender%: source
./prerender [email protected]
renderscript%: prerender1 prerender2 prerender3 prerender4
./renderscript [email protected]
postprod: renderscript1 renderscript2 renderscript3 renderscript4
./postprod [email protected]
但實際上,在此過程簡化了腳本較爲複雜,每一步的線程需要保持他的變量。
有沒有辦法讓腳本同步而不是使用佔位符命令scriptsync。
我會使用python腳本作爲包裝並使用'threading'。這樣,我可以重新使用我的shell腳本,並從pythons'threading'和其他功能中受益。 –
@ansi_lumen:由於GIL,'threading'並不總是適合'python',它取決於工作量。 – cdarke
@cdarke。真正。如果「線程」無法很好地擴展,仍然可以使用'multiprocessing'並執行實際的過程。主要想法是使用一個處理線程/分支比'bash'更方便的環境。 –