3

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

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

线程通过thread.start_new_thread().

4

1 回答 1

1

根据pythonthreading模块(较新的线程模块)上的文档,您可以调用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 中,您仍然可以访问它。

于 2013-03-25T19:24:23.697 回答