您的位置:首页 > 编程语言 > Python开发

python:多线程

2015-12-10 19:03 489 查看

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: