day33多进程之进程间通信
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day33多进程之进程间通信相关的知识,希望对你有一定的参考价值。
生产者消费者模型出现的问题及解决办法:
1、生产者进程与消费者进程通信完成后,程序卡在消费者进程
原因:生产者进程与消费者进程的通信用的是Queue队列,消费者进程通过get()方法获取生产者put()在Queue上的消息。而Queue上的消息被get()完之后,消费者进程仍在等待get()新消息,所以进程一直卡在这里。
解决办法:使用JoinableQueue队列,消费者进程get()到消息后,利用task_done()方法返回一条消息给生产者进程确认,当生产者发送消息完毕后,消费者将返回与生产者消息数相同的确认消息,生产者端再使用.join()方法关闭进程。
2、程序运行完之后,子程序仍然存在。
原因:子程序运行之后,并没有被删除,会占用内存。
解决办法:用deamon守护程序删除。deamon守护程序会使子程序随父程序的死亡而消失。定义方法:子程序.daemon。
以上是关于day33多进程之进程间通信的主要内容,如果未能解决你的问题,请参考以下文章