multiprocessing.Pipe
マルチプロセッシング パイプ(標準ライブラリ)
意味 並列処理間で直接データのやり取り
multiprocessing.Pipeとは?
multiprocessing.Pipeは、Pythonのマルチプロセス処理において、2つのプロセス間で直接データを送受信するための仕組みです。 パイプを使うと、プロセス間で双方向の通信が可能になります。
multiprocessing.Pipeの具体的な使い方
プロセス間の双方向通信
import multiprocessing
def ping_pong(conn):
while True:
msg = conn.recv()
if msg == 'ping':
print('子プロセス: pingを受信しました')
conn.send('pong')
elif msg == 'end':
print('子プロセス: 終了します')
break
if __name__ == '__main__':
parent_conn, child_conn = multiprocessing.Pipe()
p = multiprocessing.Process(target=ping_pong, args=(child_conn,))
p.start()
for _ in range(3):
parent_conn.send('ping')
response = parent_conn.recv()
print(f'親プロセス: {response}を受信しました')
parent_conn.send('end')
p.join()
print('親プロセス: 終了します')
👇出力結果
子プロセス: pingを受信しました
親プロセス: pongを受信しました
子プロセス: pingを受信しました
親プロセス: pongを受信しました
子プロセス: pingを受信しました
親プロセス: pongを受信しました
子プロセス: 終了します
親プロセス: 終了します
このコードは、multiprocessing.Pipeを使用して、親プロセスと子プロセス間で双方向通信を行う例です。 ping_pong関数は子プロセスで実行され、'ping'というメッセージを受け取ると'pong'を返し、'end'を受け取ると終了します。 メインプロセスでは、Pipeを作成し、子プロセスを開始します。その後、3回'ping'を送信し、それぞれの応答を待ちます。最後に'end'を送信して子プロセスを終了させます。 この例では、Pipeを使用して2つのプロセス間で効率的に双方向通信を行う方法を示しています。Pipeは低レベルな通信手段であり、2つのプロセス間の直接的な通信に適しています。
multiprocessing.Pipeに関するよくある質問
multiprocessing.Pipeが学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Pythonのmultiprocessing.Pipeやrandom、math、multiprocessing.Pool、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。
Pythonを学べる「プログラミング単語帳」アプリ
プログラミング単語帳がアプリになりました!Pythonはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。
収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。
いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。
2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!
2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!