我使用Python和Windows下的Tensorflow库编写深度学习软件。有时我错误地将内容加载到内存中并且计算机停止响应;我甚至无法杀死这个过程。
是否可以在Windows下限制Python脚本的内存和CPU使用率?我使用PyCharm作为编辑器。在UNIX系统下,似乎可以使用resource.RLIMIT_VMEM
,但在Windows下我收到通知no module named resource
。
答案 0 :(得分:0)
当然,您可以使用Win32 Jobs API(CreateJobObject& AssignProcessToJobObject)将您的程序生成为子流程并管理其资源。
但是我想一个更简单的解决方案,就是使用Docker来创建一个托管环境。
答案 1 :(得分:0)
这是运行资源密集型进程时的常见问题,在该进程中可能很难预测所需的内存总量。
如果主要问题是整个系统死机,则可以创建一个监视程序,以防止该事件发生并终止该进程。它有点笨拙,不如UNIX解决方案那么干净,并且会花费您一些开销,但至少可以节省您的重启时间!
使用psutil包,可以轻松地在python中完成此操作。只要使用了90%以上的虚拟内存,这段简短的代码就会运行,并杀死占用最多内存的python.exe
进程:
import time
import psutil
while True:
if psutil.virtual_memory().percent > 90:
processes = []
for proc in psutil.process_iter():
if proc.name() == 'python.exe':
processes.append((proc, proc.memory_percent()))
sorted(processes, key=lambda x: x[1])[-1][0].kill()
time.sleep(10)
也可以使用psutil.cpu_percent()
将其用于CPU。
答案 2 :(得分:-2)
限制CPU使用率是一种不好的做法。你做错了什么,修理它而不是解决它。
你说:
有时我错误地将内容和计算机加载到内存中 停止响应;
你错误地认为是什么意思?你应该从错误中吸取教训。
我建议在单独的thread中运行繁重的处理部分,以便您的脚本不会停止响应。