请参阅下面的复制代码。
跟踪内存泄漏我发现 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)