Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26316642
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Python/Ruby

2009-02-18 10:32:58

1.从数据库中读取出来的记录是多条的,我现在想一条线程来分析一条记录的相关信息情况。所以先将多线程的内容学好再说!
19.2 线程状态:生命期
一个程序开始执行就表示了主线程开始执行,每个线程都可以去创建和启动其他线程。
多线程是使用了threading模块中的类和函数的。一个类从这个基类继乘之后会覆盖掉基类中的run方法的。
这个方法就是实现这个线程要执行什么任务的。
import threading
class Test(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
    def run(self):
        print 'thread is running'

if __name__ == '__main__':
    ob = Test()
    ob.start()
可以看到只需要继承我们的多线程模块然后调用了其中的start就可以直接运行多线程了。
将其进行一次简单的修改之后:
import threading
class Test(threading.Thread):
    def __init__(self,str):
        threading.Thread.__init__(self)
        self.str = str
    def run(self):
        print self.str

if __name__ == '__main__':
    printName = ['one','two']
    checkThreads = []
    for line in printName:
      #  print line
        thread = Test(line)
        checkThreads.append(thread)
   
    for t in checkThreads:
           # t.setDaemon(True)
            t.start()
   
 具体实现什么功能是交给了start()方法进行操作的哦!
如果running 线程中调用了另一个线程的join方法的话,它必须要等待到那个加进来的线程死掉以后才能继续自己的动作的。我们会指定join中的一个参数值。表示的是:等待多少时间如果还没有反应的话就自动退出了。
示例:
import threading
import time
import random
class PrintThread(threading.Thread):
    def __init__(self,threadName):
        threading.Thread.__init__(self,name=threadName)
        self.sleepTime = random.randrange(1,6)
        print "Name:%s;sleep:%d" % (self.getName(),self.sleepTime )   
    def run(self):
        time.sleep(self.sleepTime)
        print self.getName(),"doing sleep"   
if __name__ == '__main__':
    thread1=PrintThread('thread1')
    thread2=PrintThread('thread2')
    thread3=PrintThread('thread3')   
    thread1.start()
    thread2.start()
    thread3.start()
线程同步:
最简单的一个机制就是加锁操作了!
锁对象用threading.RLock类创建的 有两个方法一个是 acquire(获得)和release(释放)
线程一旦调用 了acquire锁进入到locked状态的。
多线程程序中线程必须首先获得一个锁,再进入临界区;退出临界区要释放掉锁的。




阅读(1153) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~