超簡単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
以上、超簡単!