标签 Python 下的文章

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

导入 fabric.api 模块报错

今天在使用 fabric 同步本地和服务器 VPS 上的文件时,发现安装 fabric.api 模块时报错,原来是新的 fabric 中取消了这个模块。

错误代码如下:


# pip3 install fabric.api
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple/
Collecting fabric.api
  ERROR: Could not find a version that satisfies the requirement fabric.api (from versions: none)
ERROR: No matching distribution found for fabric.api

后来把 fabric 降级到 fabric==1.13.1 版本就好了。


pip3 install fabric==1.13.1