多线程
eg:
def text(x)
print(x)
time.sleep(2)
text(1)
text(2)
运行结果是打印1,等两秒,打印2,等两秒,如何使一二同时进行,这就用到了多线程,注释掉函数运算,创建多线程
import threading
t1 = threading.Thread(target=函数名,args=想打印的元组(1,))
t2 = threading.Thread(target=函数名,args=想打印的元组(2,))
t1.start()
t2.start()
用类的形式创建多线程
class MyThread(threading.Thread):
def __init__"(self,n)
super(MyThread,self).__init__()
self.n = n
def run(self):
print(s)
time.sleep(3)
r1 = MyThread(1)
r2 = MyThread(2)
r1.start()
r2.start()
首先创建类 MyThread,继承threading,Thread,并且继承之前的构造函数,重新定义参数并初始化,接下来使用run函数,函数名只能是run,进行打印和延迟,实例化12,然后start()开始。
如何获取运行时间
start_time = time.time()#time.time()可以获取从1970年到现在的时间
run(1)
run(2)
print(f"run函数一共运行了{time.time()-start_time}秒")
主函数:
if __name__=='__main__':
在python多线程中等待不是wait而是join
主函数也是一个线程
在主函数定义的参数,在其他函数中使用需要加global x
res = []#空列表
for i in range(100):
t = threading.Thread(target = run)
t.start()
res.append(t)#添加t到res[]列表里
for t in res#定义列表
线程锁
保证每次只有一个X在操作,保证x不会乱
lock.acquire()#申请一把锁
lock.release()#释放锁
在此之前先申请实例化一个线程锁eg:lock=threading.lock()
递归锁
lock=threading.Rlock()
用来做嵌套用