首页 > 代码库 > python——线程相关
python——线程相关
使用python的threading中的Thread
下面是两种基本的实现线程的方式:
第一种方式————
#coding=utf-8 """ thread的第一种声明及调用方式 """ from threading import Thread import time def func(): while True: print time.ctime() time.sleep(1) def func1(): while True: print "func1", time.ctime() time.sleep(2) #将要执行的方法作为参数传给Thread的构造方法 t = Thread(target=func) t.start() t1 = Thread(target=func1) t1.start()
第二种方式————
#coding=utf-8 """ thread的第二种声明及调用方法 """ import time from threading import Thread from time import sleep #从Thread继承,并重写run() class myThread(Thread): def __init__(self, threadname): Thread.__init__(self, name=threadname) def run(self): while True: print self.getName() + " " + time.ctime() time.sleep(1) t = myThread("thread_1") t.start() t1 = myThread("thread_2") t1.start()
接下来是:join和setDaemon的方法调用及具体区别:
join的方法调用:
#coding=utf-8 """ join方法的含义是:存在A主线程,B子线程,在A主线程中生成了一个子线程B, 如果子线程B调用了join方法,则主线程需要等待子线程操作结束,才能够继续往下执行,主线程会被阻塞 """ import time from threading import Thread class myThread(Thread): def __init__(self, threadname): Thread.__init__(self, name = threadname) def run(self): time.sleep(10) print self.getName() + " " + time.ctime() def mainfunc(): for i in range(5): print i if __name__ == "__main__": t = myThread("childthread") t.start() #增加join方法的调用,则程序运行时的表现是:先子线程(会先sleep 10s,之后打印子线程的内容),再运行主线程中的打印从0到4的逻辑 #不增加join方法的调用,则程序运行时的表现是:会先走主线程的打印从0到4的逻辑,之后子线程(sleep 10s,再打印子线程中的内容),但其实这里就是没有等待子线程 # t.join() mainfunc()
setDaemon方法的调用:
#coding=utf-8 """ daemon方法的含义是:存在主线程A,和子线程B,子线程B是从主线程A中生成的 如果设置子线程B为daemon即守护进程,则主线程A不存在的话,子线程B就退出 如果没有设置子线程B为daemon,则主线程A结束运行退出之后,子线程B也不退出 """ import time from threading import Thread class myThread(Thread): def __init__(self, threadname): Thread.__init__(self, name=threadname) def run(self): time.sleep(10) print self.getName() + " " + time.ctime() def mainfunc(): for i in range(5): print i if __name__ == "__main__": t = myThread("zixiancheng") #不设置子线程为守护进程,则主线程退出,子线程继续运行 #设置子线程为守护进程,则主线程退出,子线程直接退出 #并且,需要在start之前调用setDaemon # t.setDaemon(True) t.start() mainfunc()
python——线程相关
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。