zoukankan      html  css  js  c++  java
  • python系统编程(十一)

    同步应用

    多个线程有序执行

    from threading import Thread,Lock
    from time import sleep
    
    class Task1(Thread):
        def run(self):
            while True:
                if lock1.acquire():
                    print("------Task 1 -----")
                    sleep(0.5)
                    lock2.release()
    
    class Task2(Thread):
        def run(self):
            while True:
                if lock2.acquire():
                    print("------Task 2 -----")
                    sleep(0.5)
                    lock3.release()
    
    class Task3(Thread):
        def run(self):
            while True:
                if lock3.acquire():
                    print("------Task 3 -----")
                    sleep(0.5)
                    lock1.release()
    
    #使用Lock创建出的锁默认没有“锁上”
    lock1 = Lock()
    #创建另外一把锁,并且“锁上”
    lock2 = Lock()
    lock2.acquire()
    #创建另外一把锁,并且“锁上”
    lock3 = Lock()
    lock3.acquire()
    
    t1 = Task1()
    t2 = Task2()
    t3 = Task3()
    
    t1.start()
    t2.start()
    t3.start()

    运行结果:

    ------Task 1 -----
    ------Task 2 -----
    ------Task 3 -----
    ------Task 1 -----
    ------Task 2 -----
    ------Task 3 -----
    ------Task 1 -----
    ------Task 2 -----
    ------Task 3 -----
    ------Task 1 -----
    ------Task 2 -----
    ------Task 3 -----
    ------Task 1 -----
    ------Task 2 -----
    ------Task 3 -----
    ...省略...

    总结

    • 可以使用互斥锁完成多个任务,有序的进程工作,这就是线程的同步
  • 相关阅读:
    angular4 跨域携带cookie的设置
    引入第三方库jquery
    禁用输入框 浏览器的自动补全功能
    Mongodb 安装和启动
    chrome浏览器的表单自动填充
    jquery原生对象
    js获取文档高度
    字体在各个浏览器中的样式问题
    jquery中的ajax参数说明
    JavaScript中的面向对象
  • 原文地址:https://www.cnblogs.com/leecoffee/p/9037246.html
Copyright © 2011-2022 走看看