小编Luc*_*cas的帖子

Python 3.4退出时导入错误 - Tendo

我已经使用了tendo.singleton.SingleInstance()该类,因为它为临时文件提供了方便的跨平台锁定以禁止多个实例.我将在cron调用的一个类型的启动程序上使用文件锁,我只想运行一个实例.

在Linux和Windows上,它在Python 3.4退出时会出错(我想是垃圾清理).我SingleInstance()按照建议实例化,睡觉,然后允许退出.我发现文件锁已被删除,但临时文件仍然存在.

import tendo.singleton
import time

me = tendo.singleton.SingleInstance()
print('waiting')
time.sleep(5)
print('done waiting')
Run Code Online (Sandbox Code Playgroud)

在Windows 7上出现类似的错误,类似于Linux.

Exception ignored in: <bound method SingleInstance.__del__ of <tendo.singleton.SingleInstance object at 0x000000000251DC50>>
Traceback (most recent call last):
  File "C:\Anaconda3\envs\py34\lib\site-packages\tendo\singleton.py", line 63, in __del__
ImportError: import of 'sys' halted; None in sys.modules
Run Code Online (Sandbox Code Playgroud)

这在Python 2.7中不会发生.

仔细看看课堂上的__del__()方法SingleInstace(),我发现有进口:

def __del__(self):
    import sys
    import os
    if not self.initialized:
        return
    try:
        if sys.platform == 'win32':
            if hasattr(self, 'fd'):
                os.close(self.fd)
                os.unlink(self.lockfile)
        else:
            import fcntl …
Run Code Online (Sandbox Code Playgroud)

python methods destructor class python-3.x

6
推荐指数
0
解决办法
1031
查看次数

标签 统计

class ×1

destructor ×1

methods ×1

python ×1

python-3.x ×1