文档章节

常用的Python第三方库

qujin_liang
 qujin_liang
发布于 2016/08/05 15:20
字数 1389
阅读 33
收藏 0

今天公司停电,没上班。跑上来更新个博客,跟大家分享一下我常用的几个第三方 Python 库。Python 语言之所以能够如此流行,除了本身内置许多程序库来保障快速开发之外,目不睱接的第三方库也是一大主因。结合我目前的工作(网游开发),我常用的几个第三方库如下:

wxPython

如果你之前是 windows 程序员,用 MFC 或者 WIN32API 开发界面程序,那进入 Python 国度最好的 GUI 选择应该是 wxPython。它是 wxWidgets 的 Python Bind,与 wxWidgets 的开发完美同步,最为重要的一点是它的消息机制与 MFC 颇为相似,以前在 MFC 的经验完全可以稍作变化就套用在 wxPython 上面。在 WIN32 开发中,最讨厌的一环肯定有 WM_SIZE 消息的处,在主窗口大小变化的时候,保持控件布局在 WIN32 是一件麻烦事。这件事情 wx 解决得非常完美,它的sizer 概念可以让我轻松地在不同窗口尺寸的情况下保持完美的控件布局。另外如果你已经讨厌了 MFC 的 doc-view 模型,wx 也可以给你一个新的选择;如果你非常喜欢 doc-view 模型,放心,在 wx 中仍然可以轻松实现,以前的思想依然可以在这里发挥余热。

wxPython 有两个封装,一个 PythonCard,另一个是 dabo。前者是 wxPython 的有限封装,不支持wxPython 的全部特性,它的目标是让 wxPython 更加 Pythonic。后者比 PythonCard 要庞大不少,确切来说,它应该是一个三层架构的 C/S 模式的开发框架。如果你想开发基于数据库的应用(如 MIS、ERP 等)用 dabo 是一个不错的选择;另外,如果你之前习惯了 VB、VFP、Delphi 等 RAD 开发环境,dabo 并不比这些昂贵的工具差多少哦!

py2exe

按照邪恶的 windows 思维,编写的应用如果不编译出一个 .exe 文件恐怕是算不得“软件”的,py2exe 作用正是把你的 .py 脚本变成 .exe 文件,通常它会把脚本打包到一个 .zip 文件中去,但也你可以通过修改 setup.py脚本把所有的脚本、依赖的 dll 等全部打包到一个 exe 中去,看起来跟 VC、VB 编译出来的程序没有什么两样!

如果你的客户需要在 windows 下使用你的应用程序,py2exe 是你不可或缺的工具。我就是用它打包由 wxPython 写的小工具给公司里的游戏策划用的。

psyco

脚本的执行效率多少有点差强人意,虽然优化起来并不是难事,但如果有简单的方法,近乎不用修改源代码,那当然值得去关注一下。psyco 的神奇在于它只需要在代码的入口处调用短短两行代码,性能就能提升 40%或更多,真可谓是立竿见影!

如果你的客户觉得你的程序有点慢,敬请不要急着去优化代码,psyco 或许能让他立即改变看法。psyco 堪称 Python 的 jit,有许多潜力可以挖掘,如果剩下来给你优化性能的时间已经不多,请马上去阅读它的手册,有许多招儿轻松优化性能。

PIL

PIL 是 Python 的图像处理库,我的看法是强到没得说,简单到没得说。它可以打开数十种图像格式,常见的jpg/png/bmp 等当然不在话下;此外还提供许多图像处理函数,如图像增强、滤波算法等,详情可以参考我以前的一篇文章《用Python 做图像处理》(http://blog.csdn.net/lanphaday/archive/2007/10/28/1852726.aspx)和《计算图像相似度》(http://blog.csdn.net/lanphaday/archive/2008/04/24/2325027.aspx)。

MySQLdb

这是 Python 对开源数据库 Mysql 的支持,官网在http://sourceforge.net/projects/mysql-python。支持 Mysql 3.23-5.1 全系列版本,Python 版本的要求是 2.3-2.5。MySQLdb 是 Python DB API-2.0 的实现,现在已经很成熟了。最新的版本是 1.2.2 。

如果从事服务器开发,那少不得跟数据库连接池打交道,这时你可以使用 DBUtils 或 jonpy 两个开源程序库。其中 DBUtils 是一套数据库连接池库,而 jonpy 则包括了 CGI 以及数据库连接池等多个功能,请在阅读手册后选择合适的自己库。

pyprocessing

Python 解释器里的 GIL(全局解释器锁)使得 Python 在多核时代有点尴尬——这个支持原生线程的脚本语言竟然不能通过多线程利用多个 CPU 内核同时并发计算。pyprocessing 没有尝试去除 GIL,而是剑走偏锋,尝试从多进程的方式来帮助 Python 走出困境。结果就是使用 pyprocessing 创建进程和进程间通信不仅像使用内置的 threading 模块那么简单,甚至还更加简单。pyprocessing 不仅可以通过本机 socket 和管道进行通信,而且封装得极为完美,它的 Queue 实现用起来跟内置的 Queue 没啥两样,但它是一个进程间共享的队列哦!

pyprocessing 在 py2.6 和 py3.0 中已经作为内置模块了,也算是开发社区对 pyprocessing 项目的肯定吧。如果你用 Python 开发服务器应用,特别是网络游戏这样的应用,pyprocessing 怎么可以不去关注一下!

本文转载自:

共有 人打赏支持
qujin_liang
粉丝 2
博文 23
码字总数 7633
作品 0
朝阳
私信 提问
Python2.7 源码编译并集成第三方python模块

由于redhat5的python版本比较低,很多新的第三方python包及新功能都无法使用,所以需要升级系统自带python版本,打算升级到python2.7.4,并集成进去一些业务常用的第三方模块。 python安装 ...

China_OS
2014/09/16
0
0
Python Scrapy 爬虫(三):部署环境搭建

当我们的爬虫程序开发完成后,应该考虑的事情就是如何将我们的爬虫程序部署到我们的服务器上来运行了。 下面就以 CentOS 作为我们的爬虫程序的部署环境来介绍部署爬虫的第一步:部署环境搭建...

雨林_a1d6
05/29
0
0
为什么你的python版本一团糟?因为少了这个操作!

坑人的版本 python 的版本问题一直是个广被吐槽的黑点。以至于有人调侃说: python 是世界上最好的两种语言! 在这里我要说明下,对于初学者来说,版本间的语法差异其实并不大。现在刚开始学...

糖宝lsh
10/29
0
0
python3的安装与简介

Python安装(linux) 1 安装python3.6可能使用的依赖 #yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel 2 把Python3.6安装到 /usr/local 目录 ......

LinQiH
2017/10/21
0
0
学Python有什么用?python入门

  现下Python 可以做任何事情,无论是从入门级选手到专业级选手都在做的爬虫,还是Web 程序开发、桌面程序开发还是科学计算、图像处理,Python都可以胜任。   Python为我们提供了非常完善...

老男孩Linux培训
06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt那些事0.0.15

以下与Q_DECLARE_METATYPE相关内容全部是翻译自Qt文档。参看QVariant Class | Qt Core 5.9以及QMetaType Class | Qt Core 5.9 QVariant QVariant::fromValue(const T& value) 返回一份包含v......

Ev4n
刚刚
0
0
spring上传文件返回绝对路径,简单工具类

import com.google.common.io.Files;import lombok.extern.slf4j.Slf4j;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOExceptio......

Boss-x
12分钟前
1
0
1个开发如何撑起一个过亿用户的小程序

本文由云+社区发表 2018年12月,腾讯相册累计用户量突破1亿,月活1200万,阿拉丁指数排行 Top 30,已经成为小程序生态的重量级玩家。 三个多月来,腾讯相册围绕【在微信分享相册照片】这一核...

腾讯云加社区
18分钟前
3
0
golang ssh包使用方法介绍

在使用gexpect包发现很多问题之外,这里又尝试使用ssh user@127.0.0.1的思路进行用户切换。这里记录下具体的使用方法,遇到的ssh: must specify HostKeyCallback 问题的解法方法及最终使用过...

linuxprobe16
24分钟前
0
0
layer

Layui Layer在open弹出层中异步加载数据和form表单radio、checkbox、select不渲染,不可点击的解决办法 layer 实现弹窗提交信息 function confirmUpdateAward(i) { layer.open({ ...

mickelfeng
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部