python进程通信案例
时间: 2023-07-18 22:34:03 浏览: 108
以下是一个使用管道进行进程间通信的 Python 示例:
```python
from multiprocessing import Process, Pipe
def sender(pipe):
# 向管道中发送数据
pipe.send('Hello, receiver!')
def receiver(pipe):
# 从管道中接收数据
message = pipe.recv()
print(f'Received message: {message}')
if __name__ == '__main__':
# 创建管道
sender_pipe, receiver_pipe = Pipe()
# 创建两个进程,一个发送进程,一个接收进程
p1 = Process(target=sender, args=(sender_pipe,))
p2 = Process(target=receiver, args=(receiver_pipe,))
# 启动进程
p1.start()
p2.start()
# 等待进程结束
p1.join()
p2.join()
```
在上述示例中,我们创建了两个进程,一个发送进程和一个接收进程。发送进程向管道中发送一个消息,接收进程从管道中接收这个消息,并输出到控制台上。在这个示例中,我们使用了 `Pipe` 类来创建管道进行进程间通信。
相关问题
python多线程和多进程的案例
多线程和多进程都是Python中常用的并发编程方式,下面分别给出一个简单的案例进行说明。
## 多线程案例
```python
import threading
def print_num(num):
for i in range(num):
print(i)
if __name__ == '__main__':
t1 = threading.Thread(target=print_num, args=(5,))
t2 = threading.Thread(target=print_num, args=(5,))
t1.start()
t2.start()
t1.join()
t2.join()
```
以上代码创建了两个线程,分别执行`print_num`函数打印数字。`start()`方法启动线程,`join()`方法等待线程执行完毕。由于Python的GIL锁机制,多线程并不能利用多核CPU,并发性能相对于多进程较低。
## 多进程案例
```python
from multiprocessing import Process
def print_num(num):
for i in range(num):
print(i)
if __name__ == '__main__':
p1 = Process(target=print_num, args=(5,))
p2 = Process(target=print_num, args=(5,))
p1.start()
p2.start()
p1.join()
p2.join()
```
以上代码创建了两个进程,分别执行`print_num`函数打印数字。`start()`方法启动进程,`join()`方法等待进程执行完毕。由于多进程可以利用多核CPU,因此相对于多线程具有更好的并发性能。但是多进程会涉及到进程间通信、资源共享等问题,需要注意处理。
阅读全文