2013-03-25 109 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