Python 多线程 qsize 在 MacOS 上无法使用
qsize 在 MacOS 上无法运行,应该改用 while(not q.empty()):
from multiprocessing import Queue
q = Queue(3)
q.put('消息1')
q.put('消息2')
print('消息队列是否已满:', q.full())
q.put('消息3')
print('消息队列是否已满:', q.full())
# q.put('消息4')因为消息队列已满,需要直接写入需要等待,如果超时会抛出异常,
# 所以写入时候需判断,消息队列是否已满
if not q.full():
q.put('消息4')
# 同理读取消息时,先判断消息队列是否为空,再读取
# qsize 在 MacOS 上无法运行
# Raises NotImplementedError on Mac OSX because of broken sem_getvalue()
# return self._maxsize – # self._sem._semlock._get_value()
# 所以不能这样用
# for i in range(q.qsize()):
# print(q.get())
while(not q.empty()):
print(q.get())