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 -----
    ...省略...

    总结

    • 可以使用互斥锁完成多个任务,有序的进程工作,这就是线程的同步
  • 相关阅读:
    20款最优秀的JavaScript编辑器
    清空windows系统网络配置
    如何禁止Chrome浏览器隐藏URL的WWW前缀
    EDK2开发环境搭建
    edk2中子目录介绍
    INTEL_BIOS 编译—for-ATOM_E3800
    英特尔vPro博锐技术激活
    gitea configure
    mpeg1、mpeg2和mpeg4标准对比分析和总结
    内置缓存
  • 原文地址:https://www.cnblogs.com/leecoffee/p/9037246.html
Copyright © 2011-2022 走看看