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

时间:2019-03-26 22:02:18

标签: python memory while-loop os.system

我正在使用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)

1 个答案:

答案 0 :(得分:1)

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

更多的清晰度在这里确实会有所帮助-即-代码本身,以便我们找出真正的问题。