我相信这不是一个很严重的蟒蛇的情况。但实际上我并没有在任何生产代码中使用它,我只是在考虑如何(如果?)这是可行的。它不必是Python特定的,但我希望至少在Python框架内工作的解决方案。
基本上,我有一个线程安全的singleton对象来实现
__enter__
和
__exit__
(因此它可以与
with
.
Singleton():
l = threading.Lock()
__enter__():
l.acquire()
__exit__():
l.release()
在我的示例中,一个线程获取单例,并且在
具有
语句它进入无限循环。
def infinite():
with Singleton():
while True:
pass
这个实验的目的是获得
infinite
在不杀死线程的情况下从无限循环中线程退出。专门使用singleton对象。首先,我考虑使用一个从不同线程调用的异常:
Singleton():
....
def killMe():
raise exception
但这显然不会在另一个线程中引发异常。接下来我想的是,由于enter和exit方法获得了一个类变量锁,是否有任何方法可以在
Lock
这会导致获得它的线程抛出异常吗?
或者,我可能在C++中做的就是删除
this
或者从自身调用对象的析构函数。在python中有什么方法可以做到这一点吗?我知道如果可能的话,这将是一个完全的黑客工作。但是,这基本上是一个思想实验。