生产者消费者模型出现的问题及解决办法:
1、生产者进程与消费者进程通信完成后,程序卡在消费者进程
原因:生产者进程与消费者进程的通信用的是Queue队列,消费者进程通过get()方法获取生产者put()在Queue上的消息。而Queue上的消息被get()完之后,消费者进程仍在等待get()新消息,所以进程一直卡在这里。
解决办法:使用JoinableQueue队列,消费者进程get()到消息后,利用task_done()方法返回一条消息给生产者进程确认,当生产者发送消息完毕后,消费者将返回与生产者消息数相同的确认消息,生产者端再使用.join()方法关闭进程。
2、程序运行完之后,子程序仍然存在。
原因:子程序运行之后,并没有被删除,会占用内存。
解决办法:用deamon守护程序删除。deamon守护程序会使子程序随父程序的死亡而消失。定义方法:子程序.daemon。
时间: 2024-10-06 00:30:56