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