我正在使用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)
说实话,听起来应该重写程序。如果你在内部存储你不需要的数据(从你的声音中存储),你需要问问自己为什么。如果需要该数据,请将其写出并重置变量。
更清晰一点在这里真的有用 - 即 - 代码本身所以我们可以找出真正的问题。