1Up*_*1Up 4 python loops infinite while-loop
我试图弄清楚 while 循环如何确定要使用多少内存。
在基本层面:
while True:
pass
Run Code Online (Sandbox Code Playgroud)
如果我在 PHP 中做了类似的事情,它会使我的本地主机变得爬行。但在这种情况下,我希望它几乎不使用。
因此,对于 python 中的无限循环,我应该期望它会使用大量内存,还是根据正在执行的操作以及在哪里进行扩展?
您的无限循环是无操作的(它不做任何事情),因此它不会增加超出程序其余部分使用的内存使用量。要回答您的问题,您需要发布您怀疑导致内存问题的代码。
然而,在 PHP 中,相同的循环将“挂起”,因为 Web 服务器期望将响应发送回客户端。由于没有收到任何响应,网络浏览器将简单地“冻结”。根据 Web 服务器的配置方式,它可能会选择结束进程并发出超时错误。
如果您使用 Python 和 Web 框架,并在您的方法之一中放置一个无限循环来向客户端返回响应,那么您也可以这样做。
如果您从 shell 运行等效的 PHP 代码,它将具有与用 Python(或任何其他语言)编写的相同效果。也就是说,您的控制台将阻塞,直到您终止该进程。
我问是因为我想创建一个无限运行的程序,但我不确定如何确定它的足迹或它将从系统资源中占用多少。
一个无限期运行的程序(我认为这就是你的意思)——它通常有两种情况:
它等待在触发器上做一些工作(就像一个网络服务器无限期地运行,但它只是坐在那里直到有人访问你的网站)
它正在做一个需要很长时间的过程。
对于#2,您需要通过弄清楚正在完成的工作来确定资源使用情况。
如果它构建了一个大的项目列表来进行一些计算/排序,那么内存使用量将随着列表的增长而增长。
如果它处理一堆文件,并且在此过程中,它会生成大量存储在磁盘上的输出 - 然后磁盘使用量会增加,然后在该过程完成后缩小。
如果它是一个渲染引擎,那么内存使用量和 CPU 使用量将会增加,随着内存在渲染过程中被换出,磁盘使用量也会增加。但是,这样的系统不会对磁盘征税太多。
最重要的是,除非你解释正在运行的过程,否则你无法得到答案。