見出し画像

超簡単Pythonで複数(マルチ)プロセス処理

超簡単にPythonで複数(マルチ)プロセス処理

Pythonはグローバルインタプリタロックを採用してる為、処理速度を出したい時はマルチスレッドではなくマルチプロセスで

1. ファイル作成

mp.py

import logging
import multiprocessing as mp
import time

mp.log_to_stderr()
logger = mp.get_logger()
logger.setLevel(logging.INFO)


def receiver(rw):
   for num in range(10):
       rw.put(num)
       mp.get_logger().info(num)
       time.sleep(1)


def worker(rw, ws):
   while True:
       num = rw.get()
       mp.get_logger().info(num)
       ws.put(num)


def sender(ws):
   while True:
       num = ws.get()
       mp.get_logger().info(num)


rw = mp.Queue()
ws = mp.Queue()
pr = mp.Process(name="receiver", target=receiver, args=(rw,))
pw = mp.Process(
   name="worker",
   target=worker,
   args=(
       rw,
       ws,
   ),
)
ps = mp.Process(name="sender", target=sender, args=(ws,))
pr.start()
pw.start()
ps.start()
# while True:
#     mp.get_logger().info(pr.is_alive())
#     mp.get_logger().info(pw.is_alive())
#     mp.get_logger().info(ps.is_alive())
#     time.sleep(1)
pr.join()
pw.join()
ps.join()
​

2. 実行

$ python mp.py

以上、超簡単!

3. 参考

4. 関連記事


いいなと思ったら応援しよう!