3
我在CentOS linux服务器上有一个python 2.7脚本,它有一个开始新线程的错误,直到我无法再登录到服务器。python脚本的线程数限制
有没有办法告诉python运行时不要创建/启动/使用超过50个线程(并抛出异常,而不是杀死脚本)来防止这个问题,还是我必须在脚本中实现它我?
线程通过thread.start_new_thread()
启动。
我在CentOS linux服务器上有一个python 2.7脚本,它有一个开始新线程的错误,直到我无法再登录到服务器。python脚本的线程数限制
有没有办法告诉python运行时不要创建/启动/使用超过50个线程(并抛出异常,而不是杀死脚本)来防止这个问题,还是我必须在脚本中实现它我?
线程通过thread.start_new_thread()
启动。
根据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中,您仍然可以访问它。
没有'multithreading'模块和'thread'是不是年纪大了,这是低水平的。 – wRAR 2013-03-25 19:27:31
@wRAR,Ooops,你是对的。固定。谢谢。 – mjgpy3 2013-03-25 19:28:58
谢谢。我希望可以在不更改代码的情况下使用适用的解决方案,但只要它有效,我很高兴...... – phi1010 2013-03-25 19:33:57