码迷,mamicode.com
首页 > 编程语言 > 详细

python:多线程

时间:2015-12-10 21:19:33      阅读:149      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!