分类: Python
Python(KK 英语发音:/ˈpaɪθən/), 是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。
Python 2.7在调用自定义类函数时候报错"exceptions.TypeError: 'int' object is not callable"
Python 2.7
中按照如下方式定义类
在执行脚本的时候会报告如下错误
造成错误的原因在于Python 2.7
中当类的成员变量跟方法名重名的时候,默认是使用类的成员变量,而成员变量是无法被调用的,因而导致报错。
解决方法就是避免方法名跟成员变量同名即可,比如上面的定义修改成如下方式即可
Python 2.7使用multiprocessing报错PicklingError: Can't pickle : attribute lookup __builtin__.instancemethod failed
Python 2.7
中使用下面代码的时候
会报告如下错误:
这种错误发生的原因是Python 2.7
版本中的multiprocessing
模块的进程池部分存在BUG
,无法正常处理这种写法的代码,据说在Python 3.4
版本之后解决了此问题。
目前测试来看,不用Python 2.7
中的进程池,而是自己创建进程,自己管理进程的方式,可以比较简单的解决此类问题。
比如代码修改成如下样子,即可正常运行
至于多进程的管理,则只需要使用
引入multiprocessing
模块的Queue
,实现一个简单的生产者,消费者模型即可。
参考链接
WARNING:libav.swscaler:Warning: data is not aligned! This can lead to a speedloss
在Python
中使用libav
视频解码的时候,如果需要更改最后输出的视频的宽高,比如如下代码:
可能会收到一条警告信息
导致警告的原因是swscaler
的缩放的目标尺寸不合适,它预期的大小是16
的倍数,这个倍数可以保证swscaler
以最高效的方式进行图片的缩放处理。
解决警告的方式就是保证宽高都是16
的倍数即可。
参考链接
[swscaler] Warning: data is not aligned! This can lead to a speedloss 的解决方法【FFmpeg】
Ubuntu 16.04下Python打印正在运行的进程的栈信息
Python
程序在运行时候,可能由于某些原因导致进程卡住在某行代码上,此时我们需要输出进程中各个线程的栈信息。
此时我们需要使用Python
栈工具pstack
的协助,项目的工程地址https://github.com/wooparadog/pstack/
具体的用法如下:
cProfile——Python性能分析工具
Python
自带了几个性能分析的模块:profile
,cProfile
和hotshot
,使用方法基本都差不多,无非模块是纯Python
还是用C
写的。本文介绍cProfile
。
继续阅读cProfile——Python性能分析工具
python直接下载图片到内存
获取当前Python中site-packages的具体存放路径
很多时候,我们系统上安装了好几个版本的Python
, 此时,我们往往没办法确定通过pip
安装的包会存放到那个目录下的site-packages
中,可以通过如下代码获取:
在Ubuntu 16.04 LTS
系统上,这个输出是存在问题的,执行命令后输出的目录是:
实际上,通过pip
命令安装的目录有很大一部分被安装到了
目录下。
Ubuntu 16.04 LTS上使用Python3版本的PIP
Ubuntu 16.04 LTS
上使用Python2
与Python3
是共存的,而且默认使用Python2
,如果使用Python3
则需要明确指定。
1.安装Python3
版本的PIP
2.安装Python3
版本的NumPy
3.安装Python3
版本的OpenCV
注意,目前的Python3
版本的OpenCV
是不支持cv2.imshow()
的,具体查看https://pypi.python.org/pypi/opencv-python,可以看到如下信息:
Python 2.7 基于twisted实现简单的web服务器
Python 2.7
自带的SimpleHTTPServer
默认是HTTP/1.0
,导致在投放简单的视频的时候,一般是无法通过FFMPEG
进行播放的,主要是HTTP/1.0
不支持Content-Range
导致无法快进以及视频的Seek
操作。并且比较悲剧的是,如该修改成HTTP/1.1
协议,默认只有一个连接在处理,导致只要第一个用户不断开,第二个连接基本上连接不上。
网上搜索了以下,找到了用twisted
代码来实现比较简单,并且性能还不错的服务器。
本文实例讲述了Python
基于twisted
实现简单的web
服务器,分享给大家供大家参考。具体方法如下:
1.首先是通过PIP
安装twisted
2. 新建htm
文件夹,在这个文件夹中放入显示的网页文件
3. 在htm
文件夹的同级目录下,建立web.py
,代码如下:
执行脚本
然后浏览器访问:http://127.0.0.1:1234/就可以看到内容了。