免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4127 | 回复: 0

python线程总数限制? [复制链接]

论坛徽章:
0
发表于 2006-08-23 00:27 |显示全部楼层
最近在尝试多线程。  
发现一个奇怪的问题。。  

python能支持的线程总数好像是随机的?
在我这里 i686 linux2.6.15  (512ram,512swap)
运行下面的脚本

  1. import thread

  2. def counter(myId,count):
  3.     for i in range(count):
  4.         stdoutmutex.acquire()
  5.         print '[%s] => %s' %(myId,i)
  6.         stdoutmutex.release()
  7.     exitmutexes[myId].acquire()

  8. stdoutmutex = thread.allocate_lock()
  9. exitmutexes = []

  10. for i in range(2000):
  11.     exitmutexes.append(thread.allocate_lock())
  12.     thread.start_new(counter,(i,100))

  13. for mutex in exitmutexes:
  14.     while not mutex.locked() :pass
  15. 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   这个限制都不一样。

请问怎样取得一个 能产生线程数量 的最小值 保证呢?

[ 本帖最后由 lvscar 于 2006-8-23 00:37 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP