我正在尝试将一个编写不良的Python模块(我无法控制)包装成一个类。问题是,如果我不显式调用该模块的关闭函数,那么Python进程在退出时会挂起,因此我尝试使用一个带有del方法的类来包装该模块,但是在异常情况下del方法似乎不会被调用。
示例:
在这种情况下,Python不会调用del函数而会卡住。我需要找到一种方法,在对象超出范围时强制Python立即调用del函数(就像C++那样)。请注意,我无法控制有问题的模块(即无法修复导致此问题的错误),也无法控制使用包装类的人(无法强制他们使用“with”语句,因此也不能使用exit)。有没有什么好的解决方法?谢谢!
示例:
class Test(object):
def __init__(self):
# Initialize the problematic module here
print "Initializing"
def __del__(self):
# Close the problematic module here
print "Closing"
t = Test()
# This raises an exception
moo()
在这种情况下,Python不会调用del函数而会卡住。我需要找到一种方法,在对象超出范围时强制Python立即调用del函数(就像C++那样)。请注意,我无法控制有问题的模块(即无法修复导致此问题的错误),也无法控制使用包装类的人(无法强制他们使用“with”语句,因此也不能使用exit)。有没有什么好的解决方法?谢谢!