python程序在命令行中停止

时间:2014-07-04 10:14:37

标签: python cmd vmware

我用python搜索了很多关于VMware的问题,但是我没有找到有关我的问题的任何信息。 我的问题是python程序冻结,进程仍在运行,但它不使用CPU和内存使用不会改变。 程序不会返回任何异常或任何东西......它只是冻结,它永远不会返回执行。 看起来它是随机发生的,并且不存在我的机器没有可用内存的问题,因为在同一时间我可以在另一个会话中执行它。

我的计算机是虚拟机:Windows Server 2008 64位,VMware Tools 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 RAM并释放...使用和释放。冻结总是在释放内存之后,从这时起内存使用率稳定,CPU使用率为0%。

我在IDLE中运行脚本来使用调试器和堆栈查看器,但是当程序冻结时,整个空闲没有响应。 我也试过别人没有虚拟机,没有问题。

我会感激任何建议,如何解决或调试这类问题。

2 个答案:

答案 0 :(得分:9)

我解决了它,问题不在于python或VMware ....只有我对Microsoft产品的了解。

我没有提到我使用windows命令行执行python脚本,而“冻结”的原因是cmd。 如果你在命令行中标记某事,我不知道 cmd挂起执行的任务。

仅在此虚拟机上设置了“QuickEdit Mode”。您可以按照以下步骤进行更改:右键单击cmd面板 - >属性 - >标签:“选项” - >部分:“QuickEdit模式”)

在此模式下,如果单击命令行,它将标记......并暂停执行的任务... 我关闭了“QuickEdit模式”,程序运行完美。 如果没有QuickEdit模式,则无法通过单击在命令行中标记任何内容。

我知道......我应该为自己感到羞耻......我做到了。

答案 1 :(得分:0)

您应该使用readline()而不是readlines()来读取整个文件。