我搜索了很多关于VMware和Python的问题,但是我没有找到任何与我的问题相关的信息。
我的问题是Python程序会冻结,进程仍在运行,但它不使用CPU,内存使用量也不改变。
程序没有返回任何异常或其他内容……它只是冻结了,永远无法恢复执行。
看起来这种情况发生得很随机,并且并不是我的机器上没有可用的内存问题,因为在同一时间里我可以在另一个会话中执行它。
我的机器是虚拟机,运行的系统是:Windows Server 2008 64位,VMware工具版本为9.4.5。
我尝试过Python版本有:2.7、3.3和3.4。
以下是一个示例脚本(但不仅限于此脚本会冻结):
print("START")
for i in range(0, 1000):
print("step: " + str(i))
file = open("./test_file.csv", "r") #file size is 1.2GB but I have 10GB RAM
for line in file.readlines():
pass
file.close() #close the file
print("END")
示例输出为:
START
step 0
step 1
step 2
step 3
step 4
程序会突然冻结,而且不确定是在哪一步(有时候是第4步、第15步、第34步...)。我唯一能做的就是结束进程并重新运行程序。 在执行过程中,我可以看到程序会反复使用1.2GB内存并释放...使用和释放。冻结总是发生在释放内存之后,从此之后内存使用量稳定,此进程的CPU使用率为0%。
我在IDLE中运行脚本以使用调试器和堆栈查看器,但当程序冻结时,整个 IDLE 不再响应。 我还尝试了在其他非虚拟机上运行,没有出现问题。
我会很感激任何关于如何解决或调试这种问题的建议。