·## 多线程
- 在同一时间执行多个函数 时间片轮转
开始两个线程
t = threading.Thread(target=函数名,args=(元组参数列表),name='自定义线程名字')
t1 = threading.Thread(target=chi) # 准备工作
t2 = threading.Thread(target=he)
t1.start() # 启动线程
-
并行:真的多任务
-
并发:假的多任务
-
threading.enumerate()
查看所有的线程,返回一个列表,start之后,列表中才会有这个线程,start之后这个线程才有效 -
线程名字.join()
等待这个线程执行完毕之后再执行其他的代码 -
threading.current_thread().name
获取当前运行线程的名字 -
treading.Thread.getName(线程对象名)
返回线程的名字 -
t1.setDaemon(True)
设置成为守护线程,就是士兵,将军死了就都死了,默认是false -
treading.Lock()
这是一个类,返回一个引用,a.acquire() 开始位置 a.release() 结束位置,谁先上锁,谁就先执行
主线程执行完毕之后子线程也就结束了主线程最后结束
类线程
import threading
import time
class Person(threading.Thread):
def show(self):
print("show")
def run(self):
for i in range(5):
time.sleep(1)
print("类线程")
show()
if __name__ == 'main':
t = Person()
t.start()
线程类只会执行一个函数就是 run 函数
多个线程之间共享全局变量
什么时候使用global
在一个函数中,对全局变量进行修改的时候,如果不改变变量的引用,就不用global,如果改变的变量的引用就需要使用global,主要是看引用的变化