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

    总结

    • 可以使用互斥锁完成多个任务,有序的进程工作,这就是线程的同步
  • 相关阅读:
    DapperExtensions 使用教程
    C#事件订阅及触发例子
    01、类与结构的区别
    内网信息搜集
    Anydesk拿下远程桌面
    C++对注册表的操作
    Linux下常见流编辑器的使用
    Typecho1.1反序列化漏洞复现
    Nmap脚本编写
    Github学习
  • 原文地址:https://www.cnblogs.com/leecoffee/p/9037246.html
Copyright © 2011-2022 走看看