python线程总数限制?
最近在尝试多线程。
发现一个奇怪的问题。。
python能支持的线程总数好像是随机的?
在我这里 i686 linux2.6.15 (512ram,512swap)
运行下面的脚本
[Copy to clipboard] [ - ]
CODE:
import thread
def counter(myId,count):
for i in range(count):
stdoutmutex.acquire()
print '[%s] => %s' %(myId,i)
stdoutmutex.release()
exitmutexes[myId].acquire()
stdoutmutex = thread.allocate_lock()
exitmutexes = []
for i in range(2000):
exitmutexes.append(thread.allocate_lock())
thread.start_new(counter,(i,100))
for mutex in exitmutexes:
while not mutex.locked() :pass
print 'Main thread exiting'
大概有一半的概率会出现
thread.error: can't start new thread
而且thread.error 出现时 产生的线程总数也不一样。
我想这和底层os 的线程机制有关吧?
但这个限制是多少呢?
我这里当设定产生1000线程时有1/10的概率出现thread.error
google 后 知道好多老外也在讨论这个问题。。
http://www.google.com/search?num ... mit&btnG=Search
最意外的是看到 有人 在第五个线程 时就出现thread.error
http://www.velocityreviews.com/f ... art-new-thread.html
不同的kernel,不同的gcc,不同版本的python 这个限制都不一样。
请问怎样取得一个 能产生线程数量 的最小值 保证呢?