#对于io操作来说,多线程和多进程性能差别不大
#1.通过Thread类实例化
import time
import threading
def get_detail_html(url):
print("get detail html started")
time.sleep(2)
print("get detail html end")
def get_detail_url(url):
print("get detail url started")
time.sleep(4)
print("get detail url end")
#2. 通过集成Thread来实现多线程
class GetDetailHtml(threading.Thread):
def __init__(self, name):
super().__init__(name=name)
def run(self):
print("get detail html started")
time.sleep(2)
print("get detail html end")
class GetDetailUrl(threading.Thread):
def __init__(self, name):
super().__init__(name=name)
def run(self):#重写这个方法,
print("get detail url started")
time.sleep(4)
print("get detail url end")
if __name__ == "__main__":
thread1 = GetDetailHtml("get_detail_html")
thread2 = GetDetailUrl("get_detail_url")
start_time = time.time()
#thread1.setDaemon(True) 必须在t.start()之前设置 守护,主进程结束,这个无论是否执行完,都跟着结束
thread1.start()
thread2.start()
thread1.join() #阻塞,必须这个线程完成了,主线程才往下走
thread2.join()
#当主线程退出的时候, 子线程kill掉
print ("last time: {}".format(time.time()-start_time))
[python]多线程类的实现,setDaemon守护线程,join阻塞
猜你喜欢
转载自blog.csdn.net/qq_38065133/article/details/82726708
今日推荐
周排行