存档

‘Python’ 分类的存档

discuz x2.5自动登录 签到 发帖 回帖程序python程序

2013年3月12日 3 条评论

程序片段一

# -*- coding: utf-8 -*-
#! /usr/bin/env python
# -*- coding: utf-8 -*-
''' DiscuzRobot - Discuz!论坛的机器人程序,实现了登录,签到,发贴及回帖等功能
by Conanca
'''
import urllib2, urllib, cookielib, re, time
class Robot:
    def __init__(self, forumUrl, userName, password, proxy = None):
        ''' 初始化论坛url、用户名、密码和代理服务器 '''
        self.forumUrl = forumUrl
        self.userName = userName
        self.password = password
        self.formhash = ''
        self.isLogon = False
        self.isSign = False
        self.xq = ''
        self.jar = cookielib.CookieJar()
        if not proxy:
            openner = urllib2.build_opener(
	    urllib2.HTTPCookieProcessor(self.jar))
        else:
            openner = urllib2.build_opener(
	    urllib2.HTTPCookieProcessor(self.jar), 
	    urllib2.ProxyHandler({'http' : proxy}))
        urllib2.install_opener(openner)

阅读全文…

简明 Python 教程

2012年7月6日 没有评论

 本书可以作为Python编程语言的一本指南或者教程。它主要是为新手而设计,不过对于有经验的程序员来说,它同样有用。

即便你对计算机的了解只是如何在计算机上保存文本文件,你都可以通过本书学习Python。如果你有编程经验,你也可以使用本书学习Python。

 如果你以前有编程经验,那么你将会对Python语言和其他你所钟爱的编程语言之间的区别感兴趣。对此我为你指出了许多这样的区别。顺便提醒你,Python将很快成为你最喜欢的编程语言!

想学习的童鞋请点击http://woodpecker.org.cn/abyteofpython_cn/chinese/index.html

翻译redis-natives-py

2012年6月11日 没有评论

redis-natives-py

redis-natives-py模块是对redis-py中Redis实体的简单抽象,以将其与python中的数据类型相对应。该模块简洁明了,但是功能强大。它没有采用ORMing或者model-messing,因为这些不是Redis等高性能的k-v存储软件的使用方向。 阅读全文…

分类: Python 标签: ,

python中多进程模式实现

2012年6月5日 没有评论

1. 启动多个进程注册不同的端口,利用反向代理来实现

2.一个进程监听,多个进程处理

3.开启多个子进程处理(可能出现问题:multiprocessing模块和os.fork会使得两个进程重复在事件核心注册accept事件,导致文件句柄重复的异常)

分类: Python 标签: ,

[转载]gevent 安装

2012年3月21日 没有评论

其实很简单,记录在这里给有需要的朋友,大多数问题其实是出在easy_install 上的,遇到此类问题,最好能去下个源包,比如这个:
http://pypi.python.org/packages/source/g/gevent/gevent-0.13.1.tar.gz#md5=5c1b03d9ce39fee4cfe5ea8befb1d4c4

解压后,要先运行下其中的:
python fetch_libevent.py

然后:
python setup.py build
python setup.py install

齐活!简单伐?

转载自:
1.http://iyuan.iteye.com/blog/815073

分类: Python 标签: ,

[转载]python 线程,GIL 和 ctypes

2012年3月21日 没有评论

1 GIL 与 Python 线程的纠葛
GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题,
运行下面这段 python 程序,CPU 占用率会到多少:

# 请勿在工作中模仿,危险:)
def dead_loop():
while True:
pass

dead_loop()

阅读全文…

分类: Python 标签: ,

python GIL 相关

2012年3月20日 没有评论

对于纯python代码,即使开启多个线程也无法并行执行,因为GIL会将它们串行化,但这并不意味着多线程在python中无用武之地:
一个I/O密集型的线程因等待而sleep时,会释放GIL,另一个线程这时可以接手(因为在输入输出函数会更多地调用内建的C级代码,而不是Python级代码)
可以在C扩展中开启多个线程,不受GIL的限制,比如ctypes
对于多用户的程序或者需要responsive interface的GUI程序,多线程是一个很好的解决方案

参考文档:
1.http://septem.iteye.com/blog/1002509

分类: Python 标签: ,

翻译How does multi-threading work with Ice for Python?

2012年3月20日 没有评论

Python supports multi-threaded programming, but the interpreter is inherently single threaded: a global interpreter lock (GIL) allows only one thread at a time to execute a Python opcode. Despite this limitation, careful management of the GIL can still provide performance improvements; for example, a thread that is about to block on I/O can release the GIL so a different thread can use the CPU in the meantime. Although the GIL is an implementation detail that is typically of interest only to developers of Python extensions, it is still important for Python programmers to understand the semantics of the GIL and how it affects their applications.

Python程序是支持多线程的,但是它的解释器本质上确是单线程的。因为GIL(全局解释器锁)在执行Python代码的时候一次只允许开启一个线程。虽然有这个限制,但是在GIL控制方面,还有可以提升性能的。比如,一个线程在I/O阻塞的时候释放GIL,让另一个线程去使用CPU。一般GIL的实现细节应该是Python扩展开发人员应该关心的。但是它对于我们理解GIL的原因和它对我们项目的影响同样重要。

分类: Python 标签: , ,

CentOS5.4+Ice3.4.2+python2.7.2

2012年3月7日 没有评论

系统环境:
CentOS release 5.4 (Final)

软件版本:
Ice-3.4.2.tar.gz
ThirdParty-Sources-3.4.2.tar.gz
Python-2.7.2.tgz

安装过程:
tar zxf Ice-3.4.2.tar.gz #解压Ice
cd Ice-3.4.2 #进入安装目录
cd cpp #因为cpp是其他开发语言的基础,所以必须先安装
vi config/Make.rules #修改Ice安装目录,及配置第三方库所在的位置,如果没有,解压ThirdParty-Sources-3.4.2.tar.gz进行安装 阅读全文…

分类: Linux, Python 标签: ,

python解释器选项

2011年11月30日 没有评论

python解释器有很多可选项来控制起行为和环境,这里以Python 2.7.2为例,详细说明每个可选项的作用。

[maoyunlong@maomao ~]$ python --help
使用格式: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
下面是可选项及其作用:
-B     : 导入时不生成.pyc,或pyo文件
-c cmd : 以字符串形式执行命令
-d     : 输出debug日志
-E     : 忽略环境变量
-h     : 打印所有可选项列表
-i     : 在程序执行后进入执行模式
-m mod : 以脚本的形式运行库模块
-O     : 优化模块
-OO    : 优化模块,在创建.pyo文件时删除文档字符串
-Q arg : 指定除法运算符的行为
-s     : 阻止将用户目录添加到sys.path
-S     : 阻止包含site初始化模块
-t     : 报告关于不一致的标签使用警告
-u     : 未缓冲的二进制stdout和stdin
-v     : 详细模式,跟踪导入语句
-V     : 打印版本号,退出
-W arg : 输出的警告格式; arg默认是action:message:category:module:lineno
-x     : 跳过源程序第一行
-3     : 从python3中删除或更改某些功能的警告
file   : 要执行的脚本文件
-      : 从标准输入读取程序,和直接python是一样的
arg ...: 传给sys.argv[1:]的参数

有些是参考的《python参考手册》上的,有些是自己根据理解和原文翻译的,如果有不对的可以留言指出,谢谢。

分类: Python 标签: