首页 > 编程语言 > 详细

python:多线程

时间:2015-12-10 21:19:03      阅读:162      评论:0      收藏:0      [点我收藏+]

        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()

python:多线程

原文:http://www.cnblogs.com/dmir/p/5037007.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!