はじめにプロセス


1.プロセス記述
プロセスは:プログラム起動して実行した後、コードは、彼は、オペレーティングシステムのリソース割り当ての最小単位であり、+リソースがプロセスと呼ば使用し
、マルチタスクを行うことができるプロセス。

スレッド2.プロセス差:
1.プロセスは、それぞれのメモリ空間の一部を切り出し、グローバル変数を共有していない、より多くのメモリ資源
2スレッド共有グローバル変数、より少ないリソース集約
3スレッドは、プロセスの一部です。

モジュール3.multiprocessing
ターゲットを使用すると、関数参照を渡す場合、あなたはここにコードを実行するために子プロセスをタスクすることができますして
渡すように先祖伝来の道に固有のターゲットに渡された関数のパラメータを引数
に指定安徽省で農民をターゲットに渡されたパラメータの名前kwargsから
に名前を名前を設定する処理、あなたが設定することはできません
グループ指定されたプロセス・グループを、最も未満

作成した一般的に使用されるメソッドのインスタンスオブジェクトのプロセス:
()プロモータープロセスの開始
子供がまだ生きていたかどうかを判断するためにis_aliveを()
参加)の場合実行するには、子供のための待ち時間の終わり、あるいは何秒待つために
(終了)にかかわらず、タスクが完了したかどうかの、すぐに子プロセス終了

オブジェクトのインスタンスを作成するために、共通の属性プロセスを:
現在のプロセスのエイリアス名
pidは現在のプロセスをのpid

前記プロセス間通信-キュー
multiprocessing.Queue()とqueue.Queue()差
1.queue.Queue()は、キュー・ブロックの過程にある
2.multiprocessing.Queue()は、プロセス間通信キューで
3前者は各マルチプロセスであります各プロセスの合計である、プライベート
時々オペレーティング・システムを通信するために必要4.Processの間には、プロセス間通信を達成するために多数のメカニズムを提供する

:例を
、キューをインポートプロセスを多重処理から

DEF WORK1(Q):
一方q.qsize()> 0:
プリント(q.get())

DEF WORK2(Q):
一方q.qsize()> 0:
プリント(q.get())

__name__ ==「__main__」の場合:
注:上記のパスブレーカーでグローバル変数を共有することができない場合は、以下では、キューを作成します。
=キューQ()
の範囲でI(10)のために:
q.put( "http://www.baidu.com")

P =プロセス(目標= WORK1、引数=(Q))
P1 =プロセス(目標= WORK2、引数=(Q、))

p.start()
p1.start()

5.プロセスの池の
初期プールのプールがある場合、あなたは、プロセスの最大数、プールを提出するための新たな要求を指定することができます
フルない、要求を実行するための新しいプロセスを作成する限り、しかし、プールの場合プロセスの数が指定した最大に達した
リクエストはプールがあり、プロセスが終了するまで待機します、新しいタスクを実行するために至るまでのプロセスを使用しています。

プールの一般的な方法の

apply_async()非キプロス家賃FUNCの使用呼び出す
クローズを()プールが閉鎖
にかかわらず、タスクは直ちに終了完了したかどうかの)(終了し
た子プロセスが終了するのを待っている、()メインプロセスブロックに参加し、終了後に使用したり、終了する必要があります

例:

輸入OS
インポート時
、インポート処理をマルチプロセッシングから、キュー、マネージャー、プール

WORK1 DEF():
  印刷( "{}プロセスプール---"形式(os.getpid()))
  time.sleep(1)。

__name__ == IF '__main__':
P =プール(3)
Iのための範囲内(10):
  p.apply_async(WORK1)

p.close()
p.join()

6.プロセスプールキュー
であれば作成プロセスプール、()にmultiprocessing.Manager(キュー)を使用する必要がある

例:
インポートOS
インポート時
のインポート・プール・マルチプロセッシングから、マネージャー


DEF(q)をWORK1:
  印刷( "进程池--- {}"形式(os.getpid())。)
  、印刷(q.get())
  time.sleep(1)

もし__name__ == '__main__':
マネージャー()
Q =マネージャ()キュー()
の範囲内のiについて(10):
  q.put( "你好啊")

P =プール(3)
Iの範囲内(10)のための:
  p.apply_async(WORK1)

p.close()
p.join()

おすすめ

転載: www.cnblogs.com/666666pingzi/p/10993949.html