Python多线程-信号量

信号量就是一个线程中有多个线程

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR"

import threading
import time

semaphore = threading.BoundedSemaphore(5) #最多允许5个线程同时运行

def Run_Thread(n):
    semaphore.acquire()
    time.sleep(1)
    print("Run %s thread" %n)
    semaphore.release()

for i in range(24):
    t = threading.Thread(target=Run_Thread,args=(i,))
    t.start()

while threading.active_count() != 1:
    pass
else:
    print("---All Thread Have Done---")

 脚本运行的情况是5个线程同时运行,最后运行剩余的4个线程

但不是按顺序规定的5个线程同时运行,而是先运行最前面的5个线程

如果这5个线程中有先运行完的,后面的线程就不上去

例如5个线程中先运行完3个线程,则后面的线程会补2个上去

posted @ 2017-12-19 23:58  Sch01aR#  阅读(406)  评论(0编辑  收藏  举报