分类 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

nohup python 实时输出

如果没有指定输出文件,nohup 会将输出放到 nohup.out 文件中,但在程序运行过程中 nohup.out 文件中不能实时的看到 python 的输出,原因是 python 的输出有缓冲。

解决方案如下:

使用 -u 参数,使 python 输出不进行缓冲,命令格式如下:

nohup python -u [python source file] (> [log file]) 2>&1 &

Mac 配置 Python 虚拟环境 Virtualenv

Mac 系统自带 Python 2.7,但现在很多时候要用到 Python 3。而且即使要用 Python 2.7 最好不要直接使用系统自带的,还是用 brew 安装一个。

1、安装 Python3,升级 pip3

Python 3 可以 brew 安装,pip3 自己谷歌下安装,很简单不说了。

pip3 install --upgrade pip

继续阅读 »

导入 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