Python线程
Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。
#!/usr/bin/env python3 # -*- coding:utf-8 -*- import threading import time def show(arg): time.sleep(1) print('thread'+str(arg)) for i in range(10): t = threading.Thread(target=show, args=(i,)) t.start() print('main thread stop') # 结果: main thread stop thread0 thread2 thread1 thread4 thread3 thread8 thread5 thread9 thread6 thread7
上述代码创建了10个"前台"线程,然后控制器交给CPU,CPU根据指定算法进行调度,分片执行指令。
更多方法:
start 线程准备就绪,等待CPU调度
setName 为线程设置名称
getName 获取线程名称
setDaemon 设置为后台线程或前台线程(默认),如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,均停止。
如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止
join 逐个执行每个线程,执行完毕后继续往下执行,该方法使得多线程变得无意义
run 线程被cpu调度后自动执行线程对象的run方法
import threading def func(args): print(args) t = threading.Thread(target=func, args=("123",)) t.setDaemon(True) # 默认False True表示主线程不等此子线程 t.start() # 不代表当前线程会被立即执行 # t.join() # 表示主线程到此,等待....直到子线程执行完毕。 t.join(n) 带参数,表示主线程在此最多等待n秒 # func("123") print("end") print("end") print("end") print("end") print("end") print("end")