Python的多线程支持-pybatis的准备阶段(十一)

来源:互联网 发布:php仓库管理mysql 编辑:程序博客网 时间:2024/06/06 12:23

在考虑pybatis中是不是要用多线程呢?刚刚在技术群里问了一下。用户的请求大概会是从web服务器中发出来的。

那么,web服务器本身就会对请求使用多线程来处理。那么orm就不用处理了。但是还是要学习一下多线程的知识。

在py中使用线程有两种方式:
1、自己用函数包装线程对象

2、继承线程类。

先看第一种情况:

import timeimport threaddef timer(no, interval):    cnt = 0    while cnt<10:        print 'Thread:(%d) Time:%s/n'%(no, time.ctime())        time.sleep(interval)        cnt+=1    thread.exit_thread()    def test(): #Use thread.start_new_thread() to create 2 new threads    thread.start_new_thread(timer, (1,1))    thread.start_new_thread(timer, (2,2)) if __name__=='__main__':    test()


上面这种方法中,使用thread的start_new_thread函数来创建一个线程并执行参数中设定的方法。第一个参数是线程的函数。第二个参数是线程函数的参数

看第二种情况:

import threadingimport timeclass timer(threading.Thread): #The timer class is derived from the class threading.Thread    def __init__(self, num, interval):        threading.Thread.__init__(self)        self.thread_num = num        self.interval = interval        self.thread_stop = False     def run(self): #Overwrite run() method, put what you want the thread do here        while not self.thread_stop:            print 'Thread Object(%d), Time:%s/n' %(self.thread_num, time.ctime())            time.sleep(self.interval)    def stop(self):        self.thread_stop = True        def test():    thread1 = timer(1, 1)    thread2 = timer(2, 2)    thread1.start()    thread2.start()    time.sleep(10)    thread1.stop()    thread2.stop()    return if __name__ == '__main__':    test()


上面的这个例子继承了threading.Thread类。覆盖run方法就可以了。

------------------------------------------------------------------------

这是线程的基本用法。

原创粉丝点击