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())

https://www.jianshu.com/p/9938dfe2db97

标签: Python