python高级学习第三课2022-1-8

多线程
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()
用来做嵌套用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值