学习目标
-
能够使用多线程完成多任务
1. 导入线程模块
#导入线程模块 import threading
2. 线程类Thread参数说明
Thread([group [, target [, name [, args [, kwargs]]]]])
-
group: 线程组,目前只能使用None
-
target: 执行的目标任务名
-
args: 以元组的方式给执行任务传参
-
kwargs: 以字典方式给执行任务传参
-
name: 线程名,一般不用设置
3. 启动线程
# 导入进程包 import multiprocessing import time def dance(): for i in range(3): print("跳舞中...") time.sleep(0.2) def sing(): for i in range(3): print("唱歌中...") time.sleep(0.2) #group进程组:目前智能使用None,一般不需要设置 #target:进程执行的目标任务 #name:进程名:如果不设置,默认是process-1 # 创建子进程(自己手动创建的进程称为子进程,在__init__.py中已经导入了process dance_process = multiprocessing.Process(target=dance()) sing_process = multiprocessing.Process(target=sing()) # 启动进程执行对应的任务 dance_process.start() sing_process.start() # 主进程执行唱歌任务 #进程执行是无序的,具体是由操作系统决定的
启动线程使用start方法
4. 多线程完成多任务的代码
import threading import time # 唱歌任务 def sing(): # 扩展: 获取当前线程 # print("sing当前执行的线程为:", threading.current_thread()) for i in range(3): print("正在唱歌...%d" % i) time.sleep(1) # 跳舞任务 def dance(): # 扩展: 获取当前线程 # print("dance当前执行的线程为:", threading.current_thread()) for i in range(3): print("正在跳舞...%d" % i) time.sleep(1) if __name__ == '__main__': # 扩展: 获取当前线程 # print("当前执行的线程为:", threading.current_thread()) # 创建唱歌的线程 # target: 线程执行的函数名 sing_thread = threading.Thread(target=sing) # 创建跳舞的线程 dance_thread = threading.Thread(target=dance) # 开启线程 sing_thread.start() dance_thread.start()
执行结果:
正在唱歌...0 正在跳舞...0 正在唱歌...1 正在跳舞...1 正在唱歌...2 正在跳舞...2
5. 小结
-
导入线程模块
-
import threading
-
-
创建子线程并指定执行的任务
-
sub_thread = threading.Thread(target=任务名)
-
-
启动线程执行任务
-
sub_thread.start()
-