由于@Tim Peters说,在你的主线程,你获得一种信号,创建一个线程,释放信号量,重复此过程200次,从来没有减少信号灯的0
如果你要的号码为了控制创建的线程数,在主线程中,您应该首先获取一个信号量,然后创建一个线程。在线程例程结束时,释放信号而不是由主线程完成。
下面是修改:
#!/usr/bin/env python2.7
#coding: utf-8
import threading
import time
class Test:
#set the max thread number
threadLimiter = threading.BoundedSemaphore(10)
def go(self):
lstRecordThreads = []
for i in range(1, 200):
Test.threadLimiter.acquire()
recordThread = threading.Thread(target=self.recordExec, args=(i,))
recordThread.start()
lstRecordThreads.append(recordThread)
for rt in lstRecordThreads:
rt.join()
def recordExec(self, number):
print "current number=["+str(number)+"]"
time.sleep(1)
print "done=["+str(number)+"]"
print('Active thread count: %d' % (threading.active_count(),))
Test.threadLimiter.release()
if __name__ == '__main__':
t = Test()
t.go()