所以,我有一個多線程的Python程序,目前正在遭受死鎖。我正想通過子類對象threading.Lock登錄鎖定取得:是否可以在Python中繼承Lock()對象?如果沒有,調試死鎖的其他方法?
import traceback
class DebugLock(threading.Lock):
def acquire(self):
print >>sys.stderr, "acquired", self
#traceback.print_tb
threading.Lock.acquire(self)
def release(self):
print >>sys.stderr, "released", self
#traceback.print_tb
threading.Lock.release(self)
當我嘗試運行該程序,我得到以下錯誤:
class DebugLock(threading.Lock):
TypeError: Error when calling the metaclass bases
cannot create 'builtin_function_or_method' instances
所以,我的問題是雙重的:
是否有可能繼承Lock對象來做我正在做的事情?
如果沒有,在python中調試死鎖的最佳方法是什麼?
注意:我沒有編寫任何Python擴展。還有一個類似的問題:How to debug deadlock with python? 但是,它涉及編譯C++代碼和使用GDB,由於我的代碼是純Python,所以我不能這樣做。
謝謝,即使這樣! – jmite