zoukankan      html  css  js  c++  java
  • 四.并发编程 (线程信号量)

    一 .线程信号量(Semaphore)

    号量semaphore 可以控制同时运行执行的线程数量。
    信号量semaphore内部维护了一个条件变量和一个计数器。
    import threading,time
    
    sem=threading.Semaphore(3)  # 控制线程的数量    意思三个三个线程走
    def run():
     with sem:
       for i in range(10):
          print(threading.current_thread().name,i)
          time.sleep(2)
    
    if __name__=="__main__":
        for i in range(5):
             threading.Thread(target=run).start()
    from  threading import Thread,Semaphore
    import time,os
    
    def run(i,sem):
        for i in range(5):
          sem.acquire()   表示三个人拿到钥匙了方问
          print(os.getpid(),"哈哈哈哈哈哈")
          time.sleep(1)
          sem.release()      表示三个人用完钥匙还钥匙  (依次轮流)
    sem=Semaphore(3)    # 表示控制线程在同一个时间内只能三个 ,三个线程访问
    for i in range(10):
      p=Thread(target=run,args=(i,sem))
      p.start()
  • 相关阅读:
    macOS 上配置 Lua
    Oracle.ManagedDataAccess.dll
    offer
    Costura.Fody
    日志系统
    实战框架ABP
    什么是算法?
    HTTP状态码->HTTP Status Code
    How to untar a TAR file using Apache Commons
    python实践3:cursor() — 数据库连接操作
  • 原文地址:https://www.cnblogs.com/Sup-to/p/11206566.html
Copyright © 2011-2022 走看看