Python中如何实现进程间通信?
时间: 2024-03-28 19:31:51 浏览: 129
Python中实现进程间通信的方法有很多,其中比较常用的有以下几种:
1. 队列(Queue):使用multiprocessing模块中的Queue类,可以实现进程之间的数据传递和共享。
```python
from multiprocessing import Process, Queue
def f(q):
q.put('hello')
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print(q.get()) # 输出:hello
p.join()
```
2. 管道(Pipe):使用multiprocessing模块中的Pipe类,可以实现进程之间的双向通信。
```python
from multiprocessing import Process, Pipe
def f(conn):
conn.send('hello')
print(conn.recv())
conn.close()
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=f, args=(child_conn,))
p.start()
print(parent_conn.recv()) # 输出:hello
parent_conn.send('hi')
p.join()
```
3. 共享内存(Value和Array):使用multiprocessing模块中的Value和Array类,可以实现进程之间的数据共享。
```python
from multiprocessing import Process, Value, Array
def f(n, a):
n.value = 3.1415926
for i in range(len(a)):
a[i] *= 2
if __name__ == '__main__':
num = Value('d', 0.0)
arr = Array('i', range(10))
p = Process(target=f, args=(num, arr))
p.start()
p.join()
print(num.value) # 输出:3.1415926
print(arr[:]) # 输出:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
```
阅读全文