Python 使用os.system重新启动程序以节省内存?

Python 使用os.system重新启动程序以节省内存?,python,memory,while-loop,os.system,Python,Memory,While Loop,Os.system,我正在使用Python搜索网站上的特定链接或关键字,并希望大约每5秒发送一次请求。最初,我使用while True循环每5秒发送一次请求,但每次循环我的程序都比以前多使用了大约1mb的内存。由于我想在Raspberry Pi上运行我的程序可能需要几天,这会很快填满内存 在我的程序运行完我使用的所有代码后,不再使用while-True循环 os.system("python program.py") 重新启动程序,意味着一遍又一遍地运行代码将不会获得任何内存,并且平均保持在38mb左右 所

我正在使用Python搜索网站上的特定链接或关键字,并希望大约每5秒发送一次请求。最初,我使用
while True
循环每5秒发送一次请求,但每次循环我的程序都比以前多使用了大约1mb的内存。由于我想在Raspberry Pi上运行我的程序可能需要几天,这会很快填满内存

在我的程序运行完我使用的所有代码后,不再使用while-True循环

os.system("python program.py")   
重新启动程序,意味着一遍又一遍地运行代码将不会获得任何内存,并且平均保持在38mb左右

所以我的问题是:我这样做有什么坏处吗?当我希望我的计算机连续几天每5秒运行一个新的程序实例时,会出现任何问题吗

编辑:添加代码

import requests
from bs4 import BeautifulSoup, SoupStrainer
import time
import os
import psutil

while True:
    url = "https://en.wikipedia.org/wiki/Main_Page"
    source = requests.get(url).text                                             
    soup = BeautifulSoup(source, 'lxml')                                        
    for link in soup.find_all("a"):                                             
        print(link.get('href'))

    time.sleep(5)
    process = psutil.Process(os.getpid())
    print(process.memory_info().rss)
    time.sleep(5)

老实说,听起来这个程序应该重新编写。如果你在内部存储你不需要的数据(从声音上看你是这样的),你需要问问自己为什么要这样做。如果需要该数据,请将其写出并重置变量


在这里,更清楚一些会很有帮助,比如代码本身,这样我们就可以找出真正的问题。

如果内存消耗在增加,这意味着可能存在内存泄漏。修复内存泄漏问题,而不是重新启动应用程序。如果您愿意重新启动程序并丢弃任何积累的数据,则表明您正在每个循环上保留不需要的数据。如果不看你的代码,就不可能理解内存占用为什么会增长,但很明显你并不打算这么做。在我看来,这是一个经典。@zvone我添加了一个基本上就是我正在做的代码,但即使是这个简单的代码也会导致我的内存每一次循环。它从32mb开始,每个循环获得约0.7mb。这似乎是过早优化的情况。没有内存泄漏。当我在没有
时间的情况下运行此代码时。sleep
(因此内存消耗增长得更快),它总是保持在50MB左右(如预期的那样)。由于各种原因,它有时会上升,这是正常的,的确如此,但随后又会下降。所以一切都很好。我添加了一个基本上就是我正在做的代码,但即使是这个简单的代码也会导致我的内存在每个循环中上升。它从32mb开始,每个循环大约获得0.7mb,Instagram做到了这一点。他们有一些服务器一直运行到内存消耗过高,然后重新启动它。老实说,他们使用了一个修改过的CPython版本,禁用了垃圾收集器。这不是像问题中那样的内存泄漏。