当使用消息队列 Queue 的时候,如果 put() 之后直接用 empty() 方法,判断队列是否为空,多次运行,有时会返回True, 有时会返回False.
解决办法:加个 time.sleep(), 指定任意时间都可以。阻塞一下程序的执行。就会被认为是有数据,返回False, 非空。
因此,如果需要在向队列添加数据后,需要直接判断是否为空,需要在判断前加个时间阻塞一下,才可以正常的返回想要的结果。
import multiprocessing
import time
if __name__ == '__main__':
q1 = multiprocessing.Queue(3)
q1.put(1)
q1.put(1)
# q1.put(1)
time.sleep(0.0000000000000000000001)
isEmpty = q1.empty()
print(isEmpty)