易截截图软件、单文件、免安装、纯绿色、仅160KB

python中的多线程


2007-07-15
python中的多线程(2)
关键字: python thread threading
    我们在上一章中看到使用threading.Thread.join()可以避免主程序在等待其它线程结束的过程中得到时间片。事实上,在线程编程中经常会遇到一个线程需要等待另一个线程中的情况。在这种情况下,需要重申的是,我们不希望等待的线程获得时间片。
    解决的办法是使用条件变量,就像它的名称,代码使用它们来等待一些条件的成立。大多数线程系统都支持条件变量,python的threading包也不例外。
    例如,pthreads包,使用pthread_cond来代表这种变量,并且有函数pthread_cond_wait(),它代表一个线程调用等待一个事件的发生;另一个函数,pthread_cond_signal(),另一个线程调用,代表声明等待的线程事件已经发生。
    python中的条件变量较之C语言中的来说更容易使用,对于第一层次的条件变量来说,可以使用类threading.Condition,它能够在大多数的线程系统中良好的工作,但是使用这种条件变量需要进行额外的解锁和闭锁操作。
    python提供了一种更高层次的类,threading.Event,它是对于threading.Condition的一种封装,而且在后台自动处理有关的锁操作。
    接下去的例子将使用多线程来实现一个端口扫描器,多端口并行扫描,每个端口对应一个线程,同时程序可以控制线程的个数。如果主线程准备对一个新的端口进行扫描操作但是已经达到线程数的上限时,主线程会等待线程数减少到线程数上限以下再进行新端口的扫描,这个步骤通过条件变量来实现。
1 # portscanner.py: checks for active ports on a given machine; would be
2 # more realistic if checked several hosts at once; different threads
3 # check different ports; there is a self-imposed limit on the number of
4 # threads, and the event mechanism is used to wait if that limit is
5 # reached
6
7 # usage: python portscanner.py host maxthreads
8
9 import sys, threading, socket
10
11 class scanner(threading.Thread):
12     tlist = [] # list of all current scanner threads
13     maxthreads = int(sys.argv[2]) # max number of threads we’re allowing
14     evnt = threading.Event() # e


相关文档:

使用pdb调试Python程序

使用pdb调试Python程序
 
本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序
 
源码例子
例如,有模拟税收计算的程序:
 
#!/usr/bin/python
def debug_demo(val):
                if val &l ......

Pamie模块详解 python操作ie浏览器

from http://blog.alexa-pro.cn/?p=315
此文档使用平台为 cPAMIE Build 2.0,和之前的版本有明显的差别,具体可直接看cPAMIE.py 源码
下面是一些常用的方法
ie.navigate('http://blog.alexa.cn') 用来访问一个链接。
ie.linkClick('linkname') 打开这个页面中的一个连接 参数: name或 id
ie.textBoxSet('labels','python ......

python self __init__

self
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是
在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本
身,按照惯例它的名称是self。
这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。
__init_ ......

常用的python模块

from link http://www.tt010.net/cms/show_article/1057.html 发表评论 Post by : BossAdmin @[2009-12-12 17:11:20] views:115 adodb:我们领导推荐的数据库连接组件 bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUtils:数 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号