ディレクトリ
並行プログラミング
1.並行プログラミング
なぜ並行処理?
デフォルトの実装は、シリアルプログラム、上から下へのプログラム、ラインの実行順序によって線である、現在のタスクの実行が非常に低い効率で得られた次の前に完了しなければなりません
並行処理は、プログラムの効率を改善するために、複数のタスクを同時に実行することができます
2.どのように並行処理:
1.コア原則は、マルチプロセス、マルチチャネル技術であります
2.マルチスレッド
3.コルーチン
3.プロセスとは何ですか
これは、プログラムを実行しているシステムのスケジューリングおよびリソース割り当ての基本ユニットを動作させるプロセスを指します。
マルチプロセスは、複数のプログラムがメモリにロードされて実行されるのと同じ時間を意味します
4.マルチチャネル技術
コア原則は、マルチプロセス、マルチチャネル技術であります
1.空間多重
統一された時間が、互いに分離される必要がある複数のプロセスのメモリ領域との間でメモリ複数のタスクにロードされ、この分離は、物理的なレベルを分離することであり、その目的は、セキュリティ番号を確保することです
2.時分割多重化
それは、オペレーティング・システムは、複数のプロセス間で切り替えを行うために行うことを意味します
どちらの場合も、タスクが切り替え
1.プロセスが遭遇するとIO操作が自動的に切り替わり
タスク実行時間が閾値強制ハンドオーバを超える2
注意:あなたは、その後の回復を実行するために、ハンドオーバ前の状態を保存する必要があります
結論は簡単なスイッチプラス保存
マルチチャネル技術を使用すると、コンピュータは、同時に複数のタスクを同時に処理することができます
5.並行重要な概念
シリアルプログラムは、上から下に順次実行しました
同時迅速異なるタスクを切り替えます
同時に行わパラレルは、実際のマルチコアCPUを持っている必要があります
これらの3つの概念は、処理タスクのために記載されています
ブロッキングはIO操作に遭遇指し、一方の状態は時にコードを実行し続けることができません
非ブロッキングは、プログラムが状態IO操作に遭遇しなかったことを意味します
これは、プログラムの状態であります
6. 3つの状態のプロセス
操作の準備ができて閉塞
運用およびブロック解除準備があります
7.創造と破壊のプロセス
汎用コンピュータのためにプロセスを作成し、破壊する能力を持っている必要があります
作ります
1.ユーザーインタラクティブ要求、ダブルクリック
2.コールオープンなプロセスインタフェースは、実行中のプログラムで構成されています。たとえば、サブプロセスについて
3.バッチジョブを開始
4.システムの初期化
破壊:
1.タスクはオプトアウトを完了しています
2.不本意を殺すtaskkillの終わりを強制
3.プログラムは、例外が発生しました
そのような訪問は、アクセス・メモリを持つべきではありません。4.重大なエラー
8.プロセスおよび手順の間の差
プログラムは、ファイル内のコードの束であります
プロセスは、コードメモリにハードディスクから読み出され、その後、生成された実行します
プロセスは、プログラムによって生成される、プログラムが複数のプロセスを生成することができ
9.階層プロセス
linuxのプロセスにおける親子関係を持って、ツリー構造であり、彼らはお互いにお互いを見つけることができます
窓には階層がありませんが、親プロセスは子プロセスの転送を処理することができます
10.PIDとPPID
PIDは、現在のプロセスの数で、PPID親プロセスIDです
アクセスPIDおよびPPID:
import os
os.getpid()
os.getppid()
複数のプロセスを使用する方法11.python
道の子プロセスを作成します。
マルチプロセッシングの1インポートプロセスのクラスは、指定されたタスクのターゲットを実行するクラスをインスタンス化
自動的に実行され、この関数は、2 Processクラスは、このクラスのタスクの実行方法は、プロセス中にターン実行で実行されるオーバーライド継承マルチプロセッシングインポート
12.join機能
プロセスのファシリテーターの例としては、子プロセスが先に進む前に完了するために参加する機能メインプロセスが待って使用します
13.オブジェクトの共通の属性の処理
if __name__ == '__main__':
p = Process(target=task,name="老司机进程")
p.start()
p.join()
# print(p.name) #进程名
# p.daemon #守护进程
# p.join()
# print(p.exitcode) # 获取进程的退出码 就是exit()函数中传入的值
# print(p.is_alive()) # 查看进程是否存活
# print("zi",p.pid) # 获取进程id
# print(os.getpid())
# p.terminate() #终止进程 与strat 相同的是 不会立即终止,因为操作系统有很多事情要做
# print(p.is_alive())
14.ゾンビプロセスと孤立
孤児のプロセス:親プロセスが終了した子プロセスがまだ孤立したプロセスと呼ばれる子プロセスを実行しているとき、その存在の必要性、無副作用があります。
ゾンビプロセス:プロセスが終了している、しかし、それはまだいくつかのデータは、ゾンビプロセスと呼ばれるこの時間は存在しています。