python:多线程
python中提供thread 和 threading模块对多线程提供支持,其中threading模块是对thread模块的封装,多数情况下使用threading来进行多线程编程。
一.使用threading.Thread在线程中运行函数
# coding=utf-8 import threading from time import ctime, sleep def music(func): for i in range(2): print '第',i,'次听音乐!!!!' print 'I was listening to %s. %s' %(func,ctime()) sleep(1) def move(func): for i in range(2): print '第',i,'次看电影!!!' print 'I was at the %s!! %s' %(func,ctime()) def run(x,y): s=x+y print '--------',s,'---------' #在线程中运行函数 if __name__ == '__main__': threads=[] t1=threading.Thread(target=music,args=(u'爱情买卖',)) threads.append(t1) t2=threading.Thread(target=move,args=(u'阿凡达',)) threads.append(t2) t3=threading.Thread(target=run,args=(10,12)) threads.append(t3) for t in threads: t.setDaemon(True) t.start() for t in threads: t.join() print 'all over %s' %ctime()
二.继承threading.Thread 重载run方法
#coding=utf-8 import threading from time import sleep import time #继承threading.Thread类,重写run方法 class mytheard(threading.Thread): def __init__(self,num): threading.Thread.__init__(self) self.num=num def run(self): print 'I am',self.num sleep(5) class Mythread(threading.Thread): def __init__(self,ssid,tname): threading.Thread.__init__(self,name=tname) self.ssid=ssid def run(self): x=0 print x time.sleep(10) print self.ssid def example1(): t1=mytheard(1) t2=mytheard(2) t3=mytheard(3) t1.start() t2.start() t3.start() def example2(): t=Mythread(2,'t1') t.setDaemon(True)#设置该线程为守护线程 t.start() print t.getName() t.setName('t2') print t.getName()#获取线程名 print t.isAlive()#判断该线程是否还活着 print t.isDaemon()#判断该线程是否为守护线程 t.join()#阻塞主线程,直到线程t执行结束 print 'work end!!!!' if __name__ == '__main__': example2()
作者:奋斗的珞珞
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.