Python的resource
模块和POSIX setrlimit
在Unix系统上公开的资源限制机制的Windows等价物是什么?
具体来说,我将子进程的处理器时间限制为几秒钟。如果它没有在约束内完成,则终止。
答案 0 :(得分:3)
AFAIK,没有可移植的方法来获取有关Python中子进程使用的处理器时间量的信息。但是subprocess
模块做了什么(假设您使用subprocess.Popen
启动子项,这是推荐的)给出的是Popen.pid
中子进程的进程ID。您可以在Windows上执行的操作是重复使用tasklist
运行subprocess.check_output
(请参阅manual),并使用PID作为过滤器从输出中提取有关子进程的信息。
只要子进程有足够的CPU时间,并且使用subprocess.Popen()
启动子进程,就可以使用Popen.kill
方法将其终止。
但我认为使用计时器在指定的挂起时间秒后杀死子进程会更容易。因为如果子进程在没有使用CPU时间的情况下挂起(无论出于何种原因),那么等待它消耗CPU时间的python程序也是如此。