先贴出代码:
import time
import thread
import threading
def timer(tid, sleep_time):
for i in xrange(0,5):
print 'Thread:(%d) Time:%s/n'%(tid, time.ctime())
time.sleep(sleep_time)
thread.exit_thread()
def thread_main0():
print ("thread_main")
timer(0,1)
def thread_main1(time):
print ("thread_main")
timer(1,time)
if __name__=='__main__':
threads = []
threads.append(threading.Thread(target=thread_main0,args=()))
threads.append(threading.Thread(target=thread_main1,args=(3,)))
for i in range(len(threads)):
threads[i].start()
for i in range(len(threads)):
threads[i].join()
结果:
Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
thread_mainthread_main
Thread:(0) Time:Tue Mar 11 15:41:29 2014/nThread:(1) Time:Tue Mar 11 15:41:29 2014/n
Thread:(0) Time:Tue Mar 11 15:41:30 2014/n
Thread:(0) Time:Tue Mar 11 15:41:31 2014/n
Thread:(1) Time:Tue Mar 11 15:41:32 2014/n
Thread:(0) Time:Tue Mar 11 15:41:32 2014/n
Thread:(0) Time:Tue Mar 11 15:41:33 2014/n
Thread:(1) Time:Tue Mar 11 15:41:35 2014/n
Thread:(1) Time:Tue Mar 11 15:41:38 2014/n
Thread:(1) Time:Tue Mar 11 15:41:41 2014/n
>>>
几个地方:
1,启动线程的时候的参数传递的时候,当无参数的时候适用(),有参数的时候使用逗号分割,而仅仅有一个参数的时候最好也加上一个逗号,当参数是一个数组的时候,如果你不加上逗号,Python会将数组展开,就变成了传递了很多个元素,也就会报错了。
2,threads[i].join() 这个表示等待线程结束,如果没有这行,当程序还在运行的时候,你关闭程序没有任何提示;而加上这行,关闭住进程的时候会弹出线程还在执行是否继续关闭,意味着要等待该线程结束才能继续操作
参考:
Python多线程学习(一、线程的使用) http://blog.csdn.net/lazy_tiger/article/details/3861844#
python的多线程操作 http://hi.baidu.com/unphp/item/dc351af3364717733c198b66