【问题标题】:Resource limits on Windows?Windows 上的资源限制?
【发布时间】:2012-06-09 04:08:44
【问题描述】:

Python 的 resource 模块和 POSIX setrlimit 在 Unix 系统上公开的资源限制机制的 Windows 等效机制是什么?

具体来说,我将子进程的处理器时间限制为几秒钟。如果它没有在约束内完成,它就会被终止。

【问题讨论】:

  • 据我所知,它在 Windows 中不存在。您可能获得的最接近的可能是您从自己的进程控制的工作(随 Windows 2000 引入)。不过,SUS 定义的资源限制在 Windows 中不存在。
  • 顺便说一句:看看 Process Lasso。它可能部分是你感兴趣的。问题是它是否能提供你所需要的一切......

标签: python windows posix ulimit setrlimit


【解决方案1】:

AFAIK,没有可移植的方式来获取有关 Python 中子进程使用的处理器时间量的信息。但是subprocess 模块所做的(假设您使用subprocess.Popen 启动子进程,这是推荐的)给您的是Popen.pid 中子进程的进程ID。您可以在 Windows 上执行的操作是重复使用 subprocess.check_output 运行 tasklist(请参阅 manual),并使用 PID 作为过滤器从其输出中提取有关子进程的信息。

只要子进程有足够的 CPU 时间,如果您使用 subprocess.Popen() 启动子进程,您可以使用 Popen.kill 方法将其杀死。

但我认为在指定的挂墙时间秒数后使用计时器杀死子进程会更容易。因为如果子进程在不使用 CPU 时间的情况下挂起(无论出于何种原因),那么等待它消耗 CPU 时间的 Python 程序也会挂起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    相关资源
    最近更新 更多