2012-06-05 98 views
10

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

具体而言,我限制性处理器时间子进程到几秒钟。如果它没有在限制内完成,则会被终止。

+0

据我所知,它在Windows中不存在。您可能会得到最接近的工作(在Windows 2000中引入),您可以从您自己的流程中进行控制。不过,SUS定义的资源限制在Windows中并不存在。 – 0xC0000022L

+0

顺便说一句:看看Process Lasso。这可能部分是你感兴趣的部分。问题是它是否提供了你所需要的全部... – 0xC0000022L

回答

2

据我所知,有闲逛的处理器时间由Python中的子进程使用量的信息没有可移植的方法。但subprocess模块的功能是什么(假设您正在启动subprocess.Popen,建议您使用该子模块),您可以在Popen.pid中看到子进程的进程ID。您可以在Windows上执行的操作是使用subprocess.check_output反复运行tasklist(请参阅manual),并使用PID作为过滤器从其输出中提取有关子进程的信息。

只要子进程有足够的CPU时间,并且您使用subprocess.Popen()来启动子进程,则可以使用Popen.kill方法来终止它。

但我想用一个定时器的挂钟时间指定的秒数后后它会更容易杀死子进程。因为如果子进程没有使用CPU时间而挂起(无论出于何种原因),那么您的python程序会等待它耗费CPU时间。