当前位置:   article > 正文

python queue put阻塞_python 队列(queue)阻塞

python queue put

背景:python 队列 queue.Queue 或 multiprcessing.Queue 或其他队列在写入队列或从队列中读取元素时,都有可能会发生线程阻塞。

下面来说一下阻塞的类型,然后怎么避免阻塞~

一、阻塞的类型

队列的阻塞分为:入队(put)时的阻塞、出队(get)时的阻塞、整体(join)的阻塞(消费的阻塞)

二、入队的阻塞

importqueuedef入队阻塞():

q= queue.Queue(maxsize=3)for i in range(4):

q.put('任务' + str(i+1))print('Finished')if __name__ == '__main__':

入队阻塞()

注:因为定义的队列的 maxsize=3,但 put 了4个元素进队列,第4个元素将无法 put 进队列,发生阻塞;注意:就算不设置 maxsize,电脑的内存也是有限的,队列也是会满的。当队列已满,做 put 操作时,一样会发生阻塞。

正确的处理方法:

importqueuedef入队阻塞():

q= queue.Queue(maxsize=3)for i in range(4):try:

q.put('任务' + str(i+1), block=True, timeout=3)exceptqueue.Full:print('任务%d: 队列已满,写入失败' % (i+1))print('Finished')if __name__ &

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/189717
推荐阅读
相关标签
  

闽ICP备14008679号