创建线程以及启动线程
from threading import Thread import time def func(arg): time.sleep(2) print(arg) p1 = Thread(target=func, args=(1,)) #创建线程 p2 = Thread(target=func, args=(2,)) p1.start() #启动线程 p2.start() print(123)
守护线程:守护线程会等到主线程结束而结束。主线程会等到其他非守护线程结束而结束,注意:是否设为守护线程一定要在线程执行之前
from threading import Thread import time def func(arg): time.sleep(2) print(arg) p1 = Thread(target=func, args=(1,)) p2 = Thread(target=func, args=(2,)) p1.setDaemon(True) #参数为True 设置为守护线程,随主线程结束而结束 #p1.setDaemon(False) p1.start() p2.setDaemon(True) #p1.setDaemon(False) p2.start()
线程join方法:让主线程等待子线程结束在继续执行
from threading import Thread import time def func(arg): time.sleep(2) print(arg) print(‘主线程1段‘) p1 = Thread(target=func, args=(1,)) p2 = Thread(target=func, args=(2,)) p1.start() p1.join() #主线程等待此线程的结束在继续执行 print(‘主线程2段‘) p2.start() p2.join() print(‘主线程3段‘) print(123)
给线程设置别名
from threading import Thread,current_thread def func(arg): t = current_thread() #获取线程 print(arg, t) p1 = Thread(target=func, args=(1,)) p1.setName("第一个线程") #为线程设置别名 p2 = Thread(target=func, args=(2,)) p2.setName("第二个线程") p1.start() p2.start()
Rlock:让多个线程有序的对数据进行操作
from threading import Thread,RLock lock = RLock() # 定义个锁 n = 10 def change(arg): lock.acquire() #获取钥匙 global n n = i print(n) lock.release() #归还钥匙 for i in range(10): t = Thread(target=change, args=(i,)) t.start()
原文:https://www.cnblogs.com/dedadiao/p/11592378.html