Windows 上的资源限制?
回答问题 Python 的resource模块和 POSIXsetrlimit在 Unix 系统上公开的资源限制机制的 Windows 等价物是什么? 具体来说,我将子进程的处理器时间限制为几秒钟。如果它没有在约束内完成,它就会被终止。 Answers AFAIK,没有可移植的方法来获取有关 Python 中子进程使用的处理器时间量的信息。但是subprocess模块所做的(假设你用subproc
·
回答问题
Python 的resource
模块和 POSIXsetrlimit
在 Unix 系统上公开的资源限制机制的 Windows 等价物是什么?
具体来说,我将子进程的处理器时间限制为几秒钟。如果它没有在约束内完成,它就会被终止。
Answers
AFAIK,没有可移植的方法来获取有关 Python 中子进程使用的处理器时间量的信息。但是subprocess
模块所做的(假设你用subprocess.Popen
启动子进程,这是推荐的)给你的是Popen.pid
中子进程的进程 ID。您可以在 Windows 上执行的操作是重复使用subprocess.check_output
运行tasklist
(参见手册),并使用 PID 作为过滤器从其输出中提取有关子进程的信息。
一旦子进程有足够的 CPU 时间,并且如果您使用subprocess.Popen()
启动子进程,您可以使用Popen.kill
方法将其杀死。
但我认为在指定的挂墙时间秒数后使用计时器杀死子进程会更容易。因为如果子进程在不使用 CPU 时间的情况下挂起(无论出于何种原因),那么等待它消耗 CPU 时间的 Python 程序也会挂起。
更多推荐
已为社区贡献126483条内容
所有评论(0)