Python多线程的使用及其相关概念介绍
异步与多线程的区别:https://www.cnblogs.com/dream844/archive/2012/06/12/2546083.html
1. 线程的基本使用
1.1 直接通过threading模块注册使用
# -*- coding:utf-8 -*- # Author:Wong Du ''' 多线程的简单使用 ''' import threading import time def war(n): for i in range(10): print("task ", n, i) time.sleep(2) # 注册线程 t1 = threading.Thread(target=war, args=("t1",)) t2 = threading.Thread(target=war, args=("t2",)) # 运行线程 t1.start() t2.start() # war("t1") # war("t2")
1.2 通过继承threading.Thead类,重写run函数方法来调用线程
# -*- coding:utf-8 -*- # Author:Wong Du import threading import time class MyThreading(threading.Thread): def __init__(self, n, sleep_time): super(MyThreading, self).__init__() self.n = n self.sleep_time = sleep_time def run(self): print("Task ", self.n) time.sleep(self.sleep_time) # 注册线程 t1 = MyThreading("t1", 2) t2 = MyThreading("t2", 4) # 运行线程 t1.start() t2.start() # 等待t1线程执行完才执行后续代码 t1.join() print("Task t1 is done...")
1.3 多线程并行执行
1 # -*- coding:utf-8 -*- 2 # Author:Wong Du 3 4 import threading 5 import time 6 7 # 定义一个函数任务,作为注册线程使用 8 def war(n): 9 print("task", n) 10 time.sleep(2) 11 12 # 注册的线程列表 13 t_list = [] 14 # 程序开始启动线程时间 15 start_time = time.time() 16 # 运行多个线程 17 for i in range(50): 18 t = threading.Thread(target=war, args=("t-%s" % i,)) 19 t.start() 20 # 把注册的线程加到列表里 21 t_list.append(t) 22 23 # join一下,等待所有线程执行完毕 24 for t in t_list: 25 t.join() 26 27 # 计算同时开启50个线程执行完毕花费的时间 28 print("