使用一个循环,不断的创建线程,直到出现异常,才通知它们。python真是个好东西。
代码如下:
-
-
-
-
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()
-
-
-
-
-
cond.wait()
-
-
cond.release()
-
-
-
-
if __name__ == '__main__':
-
-
try:
-
for i in range(3500):
-
Worker().start()
-
except BaseException, e:
-
print "异常: ", type(e), e
-
time.sleep(5)
-
print "maxium i=", i
-
finally:
-
cond.acquire()
-
cond.notifyAll()
-
cond.release()
-
time.sleep(3)
-
print threading.currentThread().getName(), " quit"
以下是python2.7在XP下的运行结果,可能跟具体的机器物理配置也有关系。
-
...........
-
Thread-1021 -- created.
-
Thread-1022 -- created.
-
Thread-1023 -- created.
-
Thread-1024 -- created.
-
Thread-1025 -- created.
-
Thread-1026 -- created.
-
异常: can't start new thread
-
Thread-1027 -- created.
-
maxium i= 1027
-
MainThread quit
最终只能创建1027个线程。
我后来使用python2.5.2来测了一下,也只能创建1029个线程。
储位朋友有兴趣,可以使用它来测测不同平台下,最多能创建多少个线程。
阅读(1644) | 评论(0) | 转发(0) |