• 多线程(类的形式)---线程同步


     1 import threading
     2 import time
     3 
     4 
     5 class myThread(threading.Thread):
     6     # 可选的类方法,初始化的方法
     7     def __init__(self, name):
     8         threading.Thread.__init__(self)  # 固定格式,继承了一个父类,父类中的初始化方法需要重新定义一下,所以必须写这句话
     9         self.name = name
    10 
    11     '''
    12     重写run方法
    13     没加锁之前:
    14     你不能确定run()在不同线程间的执行顺序,这个由cpu处理来决定的哦。
    15     也就是说,多线程在运行的时候,哪个线程块,哪个线程慢,哪个线程先运行,哪个线程后运行,我们是没有办法控制的,
    16     这个是由CPU控制的。所以你会发现每个人每次打印出来的效果都有可能不一样。
    17     '''
    18     def run(self):
    19         # 获得锁,成功获得锁之后返回True,可选的timeout参数不填时将一直阻塞直到获得锁定
    20         threadLock.acquire()
    21         # 调用函数book,并传递参数name
    22         book(self.name)
    23         # 释放锁,开始下一个线程
    24         threadLock.release()
    25 
    26 
    27 # 这个是我们在类外面自定义的函数
    28 def book(name):
    29     time.sleep(5)
    30     print(name)
    31 
    32 
    33 threadLock = threading.Lock()
    34 # 创建线程
    35 mt1 = myThread('hello,听说你中了大奖呀!恭喜你呀!')
    36 mt2 = myThread('谢谢谢谢,哈哈哈,运气好!')
    37 # 启动线程,每个线程对象必须至少调用一次该函数,他会自动调用run方法
    38 mt1.start()
    39 mt2.start()
    40 # 猜猜下面的代码如果打开,代码运行结果是什么?
    41 mt1.join(timeout=50)  # 阻塞线程,直到该线程执行完毕之后才会运行后面的代码
    42 mt2.join()
    43 print("哈哈,运气一直比较好啊。")
  • 相关阅读:
    Floyd最小环
    D
    C
    B
    HPU personal training
    D
    A
    简练网软考知识点整理-项目风险审计及风险评估
    简练网软考知识点整理-项目需求跟踪及需求跟踪矩阵
    简练网软考知识点整理-项目资源优化、资源平衡及资源平滑
  • 原文地址:https://www.cnblogs.com/annatest/p/13353456.html
Copyright © 2020-2023  润新知