我正在使用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)
答案 0 :(得分:1)
说实话,听起来程序应该重新编写。如果您要在内部存储不需要的数据(从声音的角度来说就是这样),则需要问自己为什么。如果需要该数据,请将其写出并重置变量。
更多的清晰度在这里确实会有所帮助-即-代码本身,以便我们找出真正的问题。