Python3でmultiprocessingを使ってみる。
pythonの並列プログラミングを修得するために、今回はmultiprocessingを使いたい思います。コードは至って簡単。関数1で乱数生成し他のプロセスにデータ送り、そのデータを他のプロセスで生成された関数2が表示します。
17.2. multiprocessing — プロセスベースの並列処理 — Python 3.4.3 ドキュメント
#!/usr/bin/env python3 ## producer_taskがランダムな数字を送り、consumer_taskがそれを受け取り表示する。 import os ,random from multiprocessing import Process, Pipe ## Pipe :: 2つのプロセスで情報のやりとりをする。 ## Process :: プロセスを生成する。データの非同期的に実行するならば、このオブジェクトだけを使えばいい。 def producer_task(conn): value = random.randint(1,10) conn.send(value) print('Value [%s] sent by PID [%d]' % (value, os.getpid())) ## os.getid()を出力することで、マルチプロセッシングが出来ていることを確認する。 conn.close() def consumer_task(conn): print('Value [%d] received by PID [%d]' % (conn.recv(), os.getpid())) if __name__ == '__main__': producer_conn, consumer_conn = Pipe() consumer = Process(target=consumer_task,args=(consumer_conn,)) producer = Process(target=producer_task,args=(producer_conn,)) consumer.start() producer.start() consumer.join() producer.join()
出力
Value [9] sent by PID [14808] Value [9] received by PID [14807]
参考文献
Parallel Programming With Python
- 作者: Jan Palach
- 出版社/メーカー: Packt Publishing
- 発売日: 2014/06/25
- メディア: ペーパーバック
- この商品を含むブログを見る