有个伟人说过:

python的学习很大一部分取决与你对第三方包的熟悉和掌握程度!

 

virtualenv

virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:
1. 在没有权限的情况下安装新套件
2. 不同应用可以使用不同的套件版本
3. 套件升级不影响其他应用

http://liuzhijun.iteye.com/blog/1872241

 

1,安装配置
sudo pip install virtualenvwrapper

    创建目录用来存放虚拟环境

    mkdir $HOME/.virtualenvs

    在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs

    在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh

    运行: source ~/.bashrc

2,使用
列出虚拟环境列表: workon

也可以使用:lsvirtualenv

新建虚拟环境:mkvirtualenv [虚拟环境名称]

启动/切换虚拟环境:workon [虚拟环境名称]

删除虚拟环境:rmvirtualenv [虚拟环境名称]

离开虚拟环境:deactivate

 

 

 

 

chardet

功能:字符串/文件编码检测模板

下载:(http://pypi.python.org/pypi/chardet)

用法:chardet.detect() 返回字典,其中confidence是检测精确度,encoding是编码形式

 

libxml2

功能:解析xml文件,在公司解析pptv网站的时候用到。

下载: ~~~~~~

用法:

    html = urllib.urlopen(url).read()
    ...
    #转码
    ...
    encoding = 'utf-8'
    options = libxml2.HTML_PARSE_RECOVER | libxml2.HTML_PARSE_NOERROR \
            | libxml2.HTML_PARSE_PEDANTIC | libxml2.HTML_PARSE_NONET \
            | libxml2.HTML_PARSE_NOWARNING
    doc = libxml2.htmlReadMemory(html, len(html), None, encoding, options)
    
    context = doc.xpathNewContext()
    re_list = context.xpathEval(xpath_title) #xpath_title = "//*div[@class='movieinfo']/p/a/@title"
    print re_list.getContent(), re_list.xpathCastNodeToString()
    print re_list[0].content
    if doc:
        doc.freeDoc()


ConfigParser:

功能:读取ini配置文件

用法:

cf = ConfigParser.ConfigParser()
cf.read("conf.ini")
#获取节点内容
cf.get("db", "db_host")
cf.getint("db", "db_port")
'''
getfloat getboolean(yes, on, true, 1; no, off, false, 0)
'''

# 增加section,设置option
cf.add_section('db2')
cf.set("db2", "pass", "123")

# 移除section,option
cf.remove_option('db2','pass')
cf.remove_section('db2')

# 写回文件
cf.write(open("conf.ini", "w")) #写回操作对对原来文件破坏,既原文件排版方式改变

 

  multiprocessing

功能:多进程执行程序

用法:

 

import multiprocessing as mul

def f(x):
    return x**2

pool = mul.Pool(5)
rel  = pool.map(f,[1,2,3,4,5,6,7,8,9,10])  #将f()函数作用到表的每个元素上

res = pool.apply_async(func,args) #从进程池中取出一个进程执行func,args为func的参数。它将返回一个AsyncResult的对象,你可以对该对象调用get()方法以获得结果。
print res.get()

pool.close()  #进程池不再创建新的进程
pool.join()   #wait进程池中的全部进程。必须对Pool先调用close()方法才能join

 

nosetests

unittest2

 python -m cProfile 查看性能

 python -m SimpleHTTPServer 搭建http服务

 

timeit

python的计时模块,可以用来获取某条语句或某个函数的运行速度,得以分析性能。

基本使用方法:

import timeit

def test_range(n):
    sum = 0
    for i in range(n):
        sum += i
    return sum

def test_xrange(n):
    sum = 0
    for i in xrange(n):
        sum += i
    return sum

t_range = timeit.Timer("test_range(100)", "from __main__ import test_range");
t_xrange = timeit.Timer("test_xrange(100)", "from __main__ import test_xrange");

print(t_range.timeit())
print(t_xrange.timeit())

print(t_range.repeat(3, 10000))
print(t_xrange.repeat(3, 10000))
View Code

主要有三个方法:

1,Timer: 输入两个参数,第一个是你要计时的语句或函数,第二个是你参数语句构建环境的导入语句。

2,有了Timer对象,你可以调用timeit函数,默认返回执行你的函数一百万次所消耗的秒数。

3,Timer对象可以调用repeat函数,它接受两个可选参数。第一个参数是重复整个测试的次数,第二个参数是每个测试中调用被计时语句的次数。两个参数都是可选的,它们的默认值分别是 31000000repeat() 方法返回以秒记录的每个测试循环的耗时列表。