我確信這不是一個非常pythonic的情況。但是我沒有在任何生產代碼中實際使用這個,我只是在考慮如何(如果?)這可以工作。它不一定是python特定的,但我想要一個解決方案,至少在python框架內工作。通過單例對象強制中斷線程之間的中斷(學術)
基本上,我有一個實現了線程安全的singleton對象__enter__
和__exit__
(所以可以用with
使用。
Singleton():
l = threading.Lock()
__enter__():
l.acquire()
__exit__():
l.release()
在我的例子,一個線程獲得單和with
聲明這裏面進入無限循環。
def infinite():
with Singleton():
while True:
pass
這個實驗的目的是讓infinite
線出它的無限循環而不殺死線程。規格使用Singleton對象。首先我想用另一個線程調用異常:
Singleton():
....
def killMe():
raise exception
但是,這顯然不會引發其他線程中的異常。我接下來想到的是,由於進入和退出方法獲得一個類變量鎖,有什麼方法可以在Lock
上調用,這會導致獲取它的線程拋出異常?
或者,我可能會在C++中做的只是刪除this
或以某種方式從本身調用對象的析構函數。有沒有辦法在Python中做到這一點?我知道如果有可能,這將是一個徹頭徹尾的黑客工作。但是,這又是一個思想實驗。
玩這個周圍學習的目的是好的,但看到http://stackoverflow.com/questions/3827545#3827622爲什麼這個對於生產代碼可能是一個非常糟糕的主意。 – 2010-09-30 20:51:09