进程间通信
2021/9/4 7:07:25
本文主要是介绍进程间通信,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
案例描述:
一个进程执行加一操作,另一个进程每隔5秒打印一次。
一、用进程实现(需要进程间进行通信)
1、消息队列
Queue
def add(queue): # global aa aa =0 while aa<5: # print(aa) time.sleep(1) aa += 1 queue.put(aa) def prin(queue): # global aa while True: time.sleep(5) aa = queue.get() print(aa) if __name__ == '__main__': q = multiprocessing.Queue() p1 = multiprocessing.Process(target=add, args=(q,)) p2 = multiprocessing.Process(target=prin, args=(q,)) p1.start() p2.start() p1.join() p2.join() print("主进程结束")
2、pipe
Pipe方法返回(conn1,conn2)代表一个管道的两个端
def add(pipe): # global aa aa =0 while aa<100: # print(aa) time.sleep(1) aa += 1 if aa % 5 == 0: pipe.send(aa) def prin(pipe): # global aa while True: aa = pipe.recv() # aa = queue.get() print(aa) if __name__ == '__main__': con1, con2 = multiprocessing.Pipe() p1 = multiprocessing.Process(target=add, args=(con1,)) p2 = multiprocessing.Process(target=prin, args=(con2,)) p1.start() p2.start() p1.join() p2.join() print("主进程结束")
二、用线程实现(需要定义全局变量)
def add(): global aa while aa<100: time.sleep(1) aa += 1 def prin(): global aa while aa <100: time.sleep(5) print(aa) if __name__ == '__main__': aa = 0 thread1 = threading.Thread(target=add) thread2 = threading.Thread(target=prin) thread1.start() thread2.start() thread1.join() thread2.join() print("主进程结束")
这篇关于进程间通信的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略