限制python脚本的线程数

时间:2013-03-25 19:17:21

标签: python multithreading resources runtime limit

我在CentOS Linux服务器上有一个python 2.7脚本,它在启动新线程时出错,直到我再也无法登录到服务器。

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

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

1 个答案:

答案 0 :(得分: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中,您仍然可以访问它。