在考虑pybatis中是不是要用多线程呢?刚刚在技术群里问了一下。用户的请求大概会是从web服务器中发出来的。
那么,web服务器本身就会对请求使用多线程来处理。那么orm就不用处理了。但是还是要学习一下多线程的知识。
在py中使用线程有两种方式:
1、自己用函数包装线程对象
2、继承线程类。
先看第一种情况:
import time
import thread
def 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 threading
import time
class 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方法就可以了。
------------------------------------------------------------------------
这是线程的基本用法。