请参阅下面的复制代码。
跟踪内存泄漏我发现 reload(module) 不会立即生效。
下面的程序应该打印 0,1,2,3,4 但是,当快速执行时,它会打印 0,0,0,3,3 等序列。将 sleep() 函数中的时间增加到例如 1 秒似乎可以解决此问题。
请注意,此代码是更实用的代码的简化版本,只是为了重现问题,我需要处理现实生活中的应用程序中的情况。
有人知道如何确保稳定性吗?
我在 Windows 上,cpython27 32 位。
感谢您阅读本文。
# 这个程序假设文件夹 lib\mymodule 存在并且包含 __init__.py 进口时间 导入 io 导入 gc 模块文件 = 'c:\\python27\\lib\\mymodule\\simplemodule.py' 对于范围内的cnt(5): modulecode = """def runmodule(): 返回 %i """%(cnt) obj = io.open(模块文件,u'wb') obj.write(模块代码) obj.close() 如果cnt==0: 导入 mymodule.simplemodule 别的: 重新加载(mymodule.simplemodule) gc.collect() 打印 mymodule.simplemodule.runmodule() time.sleep(0.05)