gpt4 book ai didi

python - 队列空方法坏了吗?

转载 作者:行者123 更新时间:2023-12-04 15:20:34 25 4
gpt4 key购买 nike

如何检查队列是否为空?运行以下代码:

from multiprocessing import Queue

q = Queue()
print(q.empty())

q.put("a")
print(q.empty())

呈现:

True
True

添加元素后 q.empty() 是否应该返回 False

最佳答案

两种可能的解决方案:

  1. 使用 queue.Queue 而不是 multiprocessing.Queue:一些differences in doc他们之间:

They differ in that Queue lacks the task_done() and join() methods introduced into Python 2.5's queue.Queue class.

from queue import Queue
q = Queue()
print(q.empty())
q.put("a")
print(q.empty())
  1. 或者就像@Hans Musgrave 在评论中所说的那样。不能保证time.sleep(1)。您可以改用time.sleep(0):<
from multiprocessing import Queue
import time
q = Queue()
print(q.empty())
time.sleep(0)
q.put("a")
print(q.empty())

他们都给我:

True
False

关于 sleep(0) 的原因,零值会导致线程将其剩余时间片放弃给任何其他准备运行的线程。如果没有其他线程准备运行,函数立即返回,线程继续执行cpu放弃资源,去执行q.emety()任务。我是这么想的。

稳定的方法是使用queue.Queuequeues.SimpleQueue

关于python - 队列空方法坏了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63420388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com