溫馨提示×

multiprocess python如何進行進程間通信

小樊
120
2024-12-06 13:12:09
欄目: 編程語言

在Python中,多進程編程可以通過multiprocessing模塊實現。為了在進程之間進行通信,multiprocessing模塊提供了幾種進程間通信(IPC)機制,包括管道(Pipe)、隊列(Queue)、共享內存(Value, Array)和消息傳遞(Manager)。下面是一些示例:

  1. 管道(Pipe):
from multiprocessing import Process, Pipe

def sender(conn):
    conn.send(['Hello', 'from', 'sender'])
    conn.close()

def receiver(conn):
    message = conn.recv()
    print('Received:', message)
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p1 = Process(target=sender, args=(child_conn,))
    p2 = Process(target=receiver, args=(parent_conn,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
  1. 隊列(Queue):
from multiprocessing import Process, Queue

def worker(q):
    q.put('Hello from worker')

if __name__ == '__main__':
    q = Queue()
    p = Process(target=worker, args=(q,))
    p.start()
    print(q.get())
    p.join()
  1. 共享內存(Value, Array):
from multiprocessing import Process, Value, Array
import ctypes

def worker(num):
    num.value += 1

if __name__ == '__main__':
    num = Value(ctypes.c_int, 0)
    p = Process(target=worker, args=(num,))
    p.start()
    p.join()
    print(num.value)
  1. 消息傳遞(Manager):
from multiprocessing import Process, Manager

def worker(d):
    d['key'] = 'Hello from worker'

if __name__ == '__main__':
    with Manager() as manager:
        d = manager.dict()
        p = Process(target=worker, args=(d,))
        p.start()
        print(d['key'])
        p.join()

這些示例展示了如何使用不同的IPC機制在多進程Python程序中進行通信。你可以根據你的需求選擇合適的通信方式。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女