Python CPU使用率降至0%,在脚本执行期间按键后恢复
我的问题几乎与此处发布的问题相同:
Python sleeps until keystroke 这个帖子多年来一直处于非活动状态,如果有一个不同的协议“重新开放”这个问题请告诉我 – 我同时发布这个问题,如果我应该这样做,我会提前道歉. 我无法发布代码,但这里有一些我可以分享的细节 – 我正在执行一个包含许多迭代生成的print语句的脚本,以跟踪脚本执行的几个小时内的进度.在任务管理器中监视我的CPU使用情况时,我可以看到,当我在运行脚本的实际命令提示符中输入任何类型的键击时,周期性地使用率降至0%并且仅恢复. 这发生在我的笔记本电脑和我试过运行脚本的服务器上.操作系统是Windows 8.1和Windows Server 2012r2,我使用的是Anaconda 2.2和Python 3.4.3.我使用的唯一非标准python库是pandas 0.15.2,numpy 1.9.2,statsmodels 0.6.1和scikit-learn 0.16.1. 我不确定我是否可以确定这是否总是发生在特定的一行,但我会尝试 – 如果我能做到这一点,我可以将它追踪到我正在使用的特定包裹中吗?如果有人有什么想法可能导致这样的事情,请分享,否则任何关于如何解决这个问题的建议将非常感谢. 更新:我运行以下代码以尝试重现错误: import pandas as pd import numpy as np import matplotlib.pyplot as plt import statsmodels.api as sm from sklearn.linear_model import LogisticRegression from datetime import datetime num_rows = 1000 i = 1 t_init = datetime.now() while True: with open('temp_stage_1.txt','w') as file: file.write('current stage 1 iteration number: %d' % i) X = np.random.randint(2,size=(num_rows,25)) y = np.random.randint(2,size=num_rows) with open('temp_stage_2.txt','w') as file: file.write('current stage 2 iteration number: %d' % i) clf = LogisticRegression() clf.fit(X,y) clf.score(X,y) with open('temp_stage_3.txt','w') as file: file.write('current stage 3 iteration number: %d' % i) logit = sm.Logit(y,X) results = logit.fit(disp=False) with open('temp_stage_4.txt','w') as file: file.write('current stage 4 iteration number: %d' % i) for j in range(10000): waste_time_str = 'wasting some time' if i % 1000 == 0: t_now = datetime.now() t_delta = (t_now-t_init).seconds t_init = t_now print(t_delta) print(i) i += 1 我能够重现错误并打开创建的临时文件,我可以看到在第26000次迭代更新第4个临时文件后发生了错误.我第二次运行它时,根据第4个临时文件,错误发生在1000的另一个倍数上.另一个有趣的观察是,在我按下按键并恢复执行后,打印出的时间增量反映了坐在那里等待的时间.这也与我看到此错误的原始脚本一致,但是,在该实例中它只打印了看似正常时间范围的内容,所以我知道错误发生在分配时间值之后.在这两种情况下,看起来错误发生在其中一个打印语句中. 解决方法
您很可能偶然进入“快速编辑模式”(通过在Windows终端中选择一些文本).快速编辑模式会阻止对控制台的任何打印,直到您离开它(通过按键),这与您在其中一个打印语句中看到错误一致.
有关更多详细信息,请参阅this post(不是特定于python). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |