マルチスレッドシェルスクリプト
シェルスクリプトを使用するには、その効率を改善するために、複数のスレッドを使用することを検討して、順序の遅すぎる実装を走りました。
これは、&+マルチスレッド達成待つ使用して行われ、次の比較を参照してください。
-
実行順序の
実行が3倍時間がないが、12秒の総消費し、4秒を待つ
コード:
#/ binに/ bashのは
DATE
でNUMのためseq 1 3
のDOを
{
エコー"SLEEP 4"
SLEEP 4
}
DONE
DATEの
結果:
2019年11月20日水曜日09: CST 40:56
SLEEP 4
SLEEP 4
SLEEP 4
2019インディアン11 9月20日(水曜日)午前九時41分08秒CST - 使用・+待って
並列実行は、4秒の総取り
コード:
#/ binに/ bashのは
DATEを
NUMにするためにseq 1 3
行う
{
エコー"SLEEP 4。"
SLEEP 4。
}&
DONE
待機
DATEの
結果:
2019年11月20日水曜日、午前9時42分: CST 44
SLEEP 4
SLEEP 4
SLEEP 4
2019インディアン11 9月20日(水曜日)午前9時42分48秒CST
観察によると、見つけることができます&+ウェイトサイクルは、多数のトランザクションを扱う問題がある場合、次の方法にスレッドの数、各オープン係る制御を実現することが可能であるように、背景にコマンドすべてのボディを形成することになります
-
以下のための多層ループ
12秒、合計9回の合計、3つのスレッドを送信、4秒の待機は、かかる
コード:
#/ binに/ bashのを
DATE
からnum2のためにあるseq 1 3
ん
{
NUMにするためにseq 1 3
行う
{
エコー「SLEEPを4。」
SLEEP 4。
}&
DONE
待機
}
DONE
DATEの
結果:
2019年11月20日CST水曜日午前9時47分23秒
SLEEP 4
SLEEP 4
SLEEP 4
SLEEP 4
SLEEP 4
SLEEP 4
SLEEP 4
SLEEP 4
SLEEP 4
2019年11月20日午前九時47分35秒CST水曜日 - xargsの-Pの同時使用
9回の合計は、3つのスレッドが4秒間、送信待ち、12秒を合計すると、取り
:コード
#/ binに/ bashのを
all_num = 9
thread_num = 3
日付
配列1つの$ {} all_num | xargsの-n 1 -I {} -P $ {thread_num} SH -C "スリープ4;エコー{}"
日付
結果:
2019年11月20日水曜日午前9時51分03秒CST
1
3
2
4
5
6
8
9
7
2019年11月20日午前9時51分15秒CST水曜日
これらは、シェルが私の概要を平行になっています。そこGNU並列命令同時実行の方法を使用して、テスト環境は、順序を変更しないので、それはテストをしなかった、完了環境の後にテストされます。