ホームページ >バックエンド開発 >Python チュートリアル >Python マルチプロセスの知識ポイントのまとめ
この記事では、python に関する関連知識を提供します。主に、マルチプロセスとは何か、プロセスの作成、プロセス間同期、プロセス Chi など、マルチプロセスに関する関連コンテンツを紹介します。 、一緒に見ていきましょう、皆さんのお役に立てれば幸いです。
推奨学習: Python ビデオ チュートリアル
プログラム: たとえば、xxx.py は静的な
プロセスであるプログラムです。 : プログラムの実行後、コードによって使用されるリソースはプロセスと呼ばれ、オペレーティング システムがリソースを割り当てる基本単位になります。スレッドを介してマルチタスクを完了できるだけでなく、プロセスを実行することもできます
作業中、タスクの数が CPU コアの数よりも多くなることがよくあります。 、いくつかのタスクが実行されている必要があり、他のいくつかのタスクが CPU の実行を待機しているため、さまざまな状態になります。
multiprocessing
このモジュールは、Process
オブジェクトを作成し、そのstart()
メソッドを呼び出すことでプロセスを生成します。 Process
はthreading.Thread API
と同じです。
構文形式:multiprocessing.Process(group=None, target=None, name=None, args=(), kwargs={}, *, daemon =None)
パラメータの説明:
group
: プロセス グループを指定します。これはほとんどの場合使用されません。 target
: 関数参照が渡された場合、子プロセスにここのコードを実行するタスクを与えることができます。 name
: の名前を設定します。 args
: ターゲットによって指定された関数に渡されるパラメータは、タプル kwargs## の形式で渡されます。 #: ターゲットへ 指定された関数は名前付きパラメータを渡します
multiprocessing.Process オブジェクトには次のメソッドとプロパティがあります:
説明 | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
run()
| 具体的な実行プロセスのメソッド||||||||||||||||||||||||||
start()
| 子プロセス インスタンスの開始 (子プロセスの作成) ||||||||||||||||||||||||||
オプションのパラメーター timeout がデフォルト値 None の場合、join() メソッドを呼び出すプロセスが終了するまでブロックされます。正の数。タイムアウト秒までブロックされます。 | ||||||||||||||||||||||||||
現在のプロセスのエイリアス。デフォルトは Process-N です。 、N は 1 から増加する整数です。 |
||||||||||||||||||||||||||
現在のプロセスの pid (プロセス番号) |
||||||||||||||||||||||||||
プロセスの子プロセスがまだ生きているかどうかを確認する |
#exitcode | |||||||||||||||||||||||||
子プロセスの終了コード
|
daemon | |||||||||||||||||||||||||
プロセスのデーモン フラグはブール値です。
|
#authkey | |||||||||||||||||||||||||
|
sentinel | |||||||||||||||||||||||||
| #terminate()||||||||||||||||||||||||||
| kill()||||||||||||||||||||||||||
| close()||||||||||||||||||||||||||
2. 2 つの while ループをまとめて実行します# -*- coding:utf-8 -*-from multiprocessing import Processimport timedef run_proc(): """子进程要执行的代码""" while True: print("----2----") time.sleep(1)if __name__=='__main__': p = Process(target=run_proc) p.start() while True: print("----1----") time.sleep(1) 実行結果: 3 を開始します。プロセス pid# -*- coding:utf-8 -*-from multiprocessing import Processimport osimport timedef run_proc(): """子进程要执行的代码""" print('子进程运行中,pid=%d...' % os.getpid()) # os.getpid获取当前进程的进程号 print('子进程将要结束...')if __name__ == '__main__': print('父进程pid: %d' % os.getpid()) # os.getpid获取当前进程的进程号 p = Process(target=run_proc) p.start() 実行結果: 4. 子プロセスで指定された関数にパラメータを渡します# -*- coding:utf-8 -*-from multiprocessing import Processimport osfrom time import sleepdef run_proc(name, age, **kwargs): for i in range(10): print('子进程运行中,name= %s,age=%d ,pid=%d...' % (name, age, os.getpid())) print(kwargs) sleep(0.2)if __name__=='__main__': p = Process(target=run_proc, args=('test',18), kwargs={"m":20}) p.start() sleep(1) # 1秒中之后,立即结束子进程 p.terminate() p.join() 実行結果: 5. グローバル変数はプロセス間で共有されません# -*- coding:utf-8 -*-from multiprocessing import Processimport osimport time nums = [11, 22]def work1(): """子进程要执行的代码""" print("in process1 pid=%d ,nums=%s" % (os.getpid(), nums)) for i in range(3): nums.append(i) time.sleep(1) print("in process1 pid=%d ,nums=%s" % (os.getpid(), nums))def work2(): """子进程要执行的代码""" print("in process2 pid=%d ,nums=%s" % (os.getpid(), nums))if __name__ == '__main__': p1 = Process(target=work1) p1.start() p1.join() p2 = Process(target=work2) p2.start() 実行結果: in process1 pid=11349 ,nums=[11, 22]in process1 pid=11349 ,nums=[11, 22, 0]in process1 pid=11349 , nums=[11, 22, 0, 1]in process1 pid=11349 ,nums=[11, 22, 0, 1, 2]in process2 pid=11350 ,nums=[11, 22] 3. プロセス間同期 - キュー#1. キュー クラスの構文の説明
|
以上がPython マルチプロセスの知識ポイントのまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。