Python 多线程初识
1.第一种使用方法
#!/usr/bin/env python # --*-- encoding:utf-8 --*-- import time import threading def func(num): time.sleep(1) print(num) th = [] for i in range(10): t = threading.Thread(target=func,args=(i,)) th.append(t) for i in th: i.start() for i in th: i.join()
2.第二种使用方法
import time import threading class MyThread(threading.Thread): def __init__(self,arg): super(MyThread,self).__init__() self.arg =arg def run(self): time.sleep(1) print(self.arg) th = [] for i in range(10): t = MyThread(i) th.append(t) for i in th: i.start() for i in th: i.join()
3.线程常用方法
t.start() : 激活线程 ,线程启动 t.getName() : 获取线程的名称 t.setName() : 设置线程的名称 t.name : 获取或设置线程的名称 t.is_alive() : 判断线程是否为激活状态 t.isAlive() :判断线程是否为激活状态 t.setDaemon() 获取/设置是后台线程(默认前台线程(False))。(在start之前设置)
如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,均停止;
如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止 t.isDaemon() : 判断是否为守护线程 t.ident :获取线程的标识符。线程标识符是一个非零整数,只有在调用了start()方法之后该属性才有效,否则它只返回None。 t.join() :逐个执行每个线程,执行完毕后继续往下执行,该方法使得多线程变得无意义 t.run() :线程被cpu调度后自动执行线程对象的run方法
总结:
1. 这种情况,主线程执行太快,先输出qqq, 如果你要按顺序执行,必须加上 i.join() ,让主线程等待子线程执行完毕后,接着执行
for i in th: i.start()
print('qqq')

浙公网安备 33010602011771号