day33マルチプロセス

プロセス

このプログラムは、呼び出されたプロセスで実行するプログラムの実施プロセス、抽象的な概念であるされています

オペレーティングシステムからプロセス

 

 

マルチプロセス

プロセスおよび手順の間の差

、プログラムが実行されていないファイルの束を識別することができ、コンピュータプログラムは、バイナリ、ハードドライブの杭の上に横たわっています

プログラムがメモリにハードディスクからデータを読み取るために、実行すると、CPUは、メモリから命令を読み取り、実行し、

操作は、プロセスを生じさせた後は

プログラムは、複数のプロセスを生成するために複数回実行されますが、独立したプロセスですすることができます

我々は右PYファイルを実行すると、実際には、通訳の引数としてPythonインタプリタ、あなたが実際にPYファイルを開始しました

 

非ブロッキング同時並列ブロッキング(フォーカス)

妨害:プログラム遭遇IO操作がブロックされた状態になっています

本地IO入力された印刷睡眠読み書き

ネットワークのIOのrecv送信

ノンブロッキング:プログラムはブロック解除任意のIO操作で実行されていません

彼はプログラムの非ブロッキング状態の遮断が実行することであると述べました

同時:複数のタスクを同時に処理するに表示され、基本的に非常に高速な切り替えを行います

パラレル:複数のタスクを同時に本物の持っている必要がありますマルチコアCPUのみ可能並列に実行します

彼は、同時並列タスクが処理されると

三つの状態を切り替えます

 

 

プログラマ永遠のトピック

効率を改善

基本的な方法は、プログラムが可能な限り実行させることです

できるだけIOマルチCPU時間を削減

バッファは、IO操作を低減するために使用されます

 

 

理解と破壊のプロセスを作成します。

レシピ:プログラムがあります

プロセス料理:プロセスがあります

 

二つの方法の工程(フォーカス)

1.直接インスタンス化プロセス、タスクが受信対象で実行されます

  マルチプロセッシングインポートプロセス

デフ:タスク(N)
    (N)time.sleep 


場合 __name__ == ' __main__ ' 
    P =プロセス(目標=タスク、引数の=(6 )) 
    )(p.start 

2:継承プロセスクラス、runメソッドが実行メソッドにタスクなりオーバーライド

クラスMyProcess(プロセス):
     デフ実行します(自己):
         印刷' 121212121 ' 


であれば __name__ == ' __main__ ' 

    。MyProcess()開始()

機能(フォーカス)に参加

 

プロセスオブジェクトは、参加機能を含みます

親プロセスは子プロセスが終了するのを待つように、子プロセスを改善するための優先順位

もし __name__ == ' __main__ ' 
    P =プロセス(目標=タスク、引数=(6 ))
    p.start()
    p.join()
    プリント' .0.0.0.0。'

 

ゾンビと孤立を理解します

孤立

子供がまだ実行されている間、親プロセスが終了することを意味し、

無害孤立し、その存在が必要とされます

例:QQはブラウザを開き、QQの最初のブラウザを終了は実行を継続すべきです

孤立したオペレーティングシステムが引き継がれます

 

ゾンビプロセス

価値は、子プロセスは終わったが、オペレーティングシステムが時間を実行している、などPIDなど、いくつかの情報プロセスを維持します、このプロセスのこの時間は、ゾンビプロセスと呼ばれています

あまりにも多くのゾンビプロセスは、リソースの多くを取る場合は、新しいシステムが得られ、新しいプロセスを開くことができません。

Linuxは、親リソースのための子供のWAI / waitpidの回復を持っています

Pythonは自動的にゾンビを回復します

共通のプロパティ

子供が終了するための#P.join()#待ち
#のp.terminateを()プロセスを終了する#
名前#プリントを(p.name)#プロセス
#プリント(p.is_alive())#生きている
#のp.terminate()#遅延が発生しますので、startコマンドと同様に、オペレーティング・システムに送信されます
#印刷(p.is_alive())
印刷(p.pid)
印刷(p.exitcode)終了コード番号を取得します

 

おすすめ

転載: www.cnblogs.com/jixu/p/10957053.html