2013-03-25 112 views
3

我在CentOS linux服务器上有一个python 2.7脚本,它有一个开始新线程的错误,直到我无法再登录到服务器。python脚本的线程数限制

有没有办法告诉python运行时不要创建/启动/使用超过50个线程(并抛出异常,而不是杀死脚本)来防止这个问题,还是我必须在脚本中实现它我?

线程通过thread.start_new_thread()启动。

回答

1

根据documentation on the python threading module(较新的线程模块),您可以调用模块上的active_count()方法并找出有多少线程正在运行。现在,据我所知,您使用的是较低级别的thread模块,所以我看着它通过运行:

import thread 
dir(thread) 

这产生的名单:

['LockType', '__doc__', '__name__', '__package__', '_count', '_local', 'allocate', 'allocate_lock', 'error', 'exit', 'exit_thread', 'get_ident', 'interrupt_main', 'stack_size', 'start_new', 'start_new_thread'] 

(我表明这一点,因为它是非常在找出哪些模块包含,特别是在交互式终端)有用

你可以看到thread模块包含_count场,即要求(如thread._count())应返回数正在运行的线程(您可以检查该值并在超出最大值时引发异常)。

当然,在前面_count下划线意味着该方法被处理,有点像一个私有方法。但是,在Python中,您仍然可以访问它。

+0

没有'multithreading'模块和'thread'是不是年纪大了,这是低水平的。 – wRAR 2013-03-25 19:27:31

+0

@wRAR,Ooops,你是对的。固定。谢谢。 – mjgpy3 2013-03-25 19:28:58

+0

谢谢。我希望可以在不更改代码的情况下使用适用的解决方案,但只要它有效,我很高兴...... – phi1010 2013-03-25 19:33:57