写了一段生产者消费者模型的代码:

 from time import sleep
from random import randint, random
from multiprocessing import Process, Queue def consumer(q, name):
while 1:
if q.get() == 'stop' and q.qsize() == 0:
break
food = q.get()
print('%s 吃了 %s' % (name, food))
sleep(randint(1, 3)) def producer(q, name, food):
for i in range(10):
sleep(random())
foo = food + str(i)
print("%s 拉了一坨 %s" % (name, foo))
q.put(foo) if __name__ == '__main__':
q = Queue(10)
c = Process(target=consumer, args=(q, "老狗"))
c.start()
p1 = Process(target=producer, args=(q, '峰哥', '粑粑'))
p1.start()
p1.join()
q.put('stop')

这段代码执行的结果是:

 峰哥 拉了一坨 粑粑0
峰哥 拉了一坨 粑粑1
老狗 吃了 粑粑1
峰哥 拉了一坨 粑粑2
峰哥 拉了一坨 粑粑3
峰哥 拉了一坨 粑粑4
老狗 吃了 粑粑3
峰哥 拉了一坨 粑粑5
老狗 吃了 粑粑5
峰哥 拉了一坨 粑粑6
峰哥 拉了一坨 粑粑7
老狗 吃了 粑粑7
峰哥 拉了一坨 粑粑8
峰哥 拉了一坨 粑粑9
老狗 吃了 粑粑9

发现只打印了奇数的产品,排错发现是逻辑出错了,应该先用food先从队列里面get,然后去判断,而上面这段代码的问题出在每次if判断从队列里面拿出来了一个导致的

下面是修改后的代码:

 from time import sleep
from random import randint, random
from multiprocessing import Process, Queue def consumer(q, name):
while 1:
food = q.get()
if food == 'stop':
break
print('%s 吃了 %s' % (name, food))
sleep(randint(1, 3)) def producer(q, name, food):
for i in range(10):
sleep(random())
foo = food + str(i)
print("%s 拉了一坨 %s" % (name, foo))
q.put(foo) if __name__ == '__main__':
q = Queue(10)
c = Process(target=consumer, args=(q, "老狗"))
c.start()
p1 = Process(target=producer, args=(q, '峰哥', '粑粑'))
p1.start()
p1.join()
q.put('stop')

最新文章

  1. 如何记录搜索引擎爬行记录php版
  2. hdu 2897 巴什博弈变形 ***
  3. 安卓第九天笔记-Activity
  4. 如何设置word里的代码格式,使之有底纹的效果
  5. 利用netstat和tasklist查看PC的端口占用情况
  6. QML Flipable、Flickable和状态与动画 上篇
  7. mysql索引优化面试题
  8. 0x13链表与邻接表之邻值查找
  9. 关于ELK
  10. R 的农场 chebnear (二分答案+最近平面点对)
  11. DDD领域模型数据访问权限之权限(十二)
  12. vue之常用指令
  13. html标签之img
  14. ngIf 和 template的结合使用
  15. Cookie的介绍及使用
  16. linux 分区 文件系统
  17. Qt 学习之路 2(58):编辑数据库外键
  18. 股神小L
  19. 杭电 2553 N皇后问题
  20. mysql复制延迟排查

热门文章

  1. 【数据分析】算法+Echarts小练
  2. nyoj254-编号统计
  3. Tarjan算法 (强联通分量 割点 割边)
  4. 面试准备专题——SOA架构
  5. BA-Siemens-时间表
  6. 在magento的eav模型中如何在更新记录时只在value表的原值上更新
  7. poi读取合并单元格
  8. Leetcode_299_Bulls and Cows
  9. 一个关于 UIPickerView 的 bug
  10. Spring In Action读书笔记