注:这个代码以前确实能测出能建多少个线程,但是好长时间过去了,今天我再启动,代码报错~~
而且,好长时间之后,我都看不太懂当初自己写的代码了,一些基本的Python类啥的,都忘了,所以更别提更正代码了,贴出代码,希望大家有需要的能够借鉴一下,因为代码确实存在一些错误… QAQ
import threading
import time, random, sys
class Counter:
def __init__(self):
self.lock = threading.Lock()
self.value = 0
def increment(self):
self.lock.acquire()
self.value = value = self.value + 1
self.lock.release()
return value
counter = Counter()
cond = threading.Condition()
class Worker(threading.Thread):
def run(self):
print(self.getName(), "-- created.")
cond.acquire()
# for i in range(10):
# pretend we're doing something that takes 10?00 ms
# value = counter.increment()
# time.sleep(random.randint(10, 100) / 1000.0)
cond.wait()
# print self.getName(), "-- task", "finished"
cond.release()
if __name__ == '__main__':
max_num=0
try:
while(True):
Worker().start() # start a worker
max_num+=1
except BaseException as e:
print("异常: ", type(e), e)
time.sleep(5)
print("maxium i={}",max_num)
finally:
cond.acquire()
cond.notifyAll()
cond.release()
time.sleep(3)
print(threading.currentThread().getName(), " quit")