python - 如何阻止 Python 程序不断增加内存使用量?
问题描述
我创建了一个小程序来测量我的 4g 数据消耗,它运行良好......除了一个部分。
运行了一整天后,我听到我的电脑发出了我从未听过的声音,所以当我去我的任务管理器时,我惊讶地发现了一个使用 3GB RAM 的 Python 程序。我停止了程序并重新运行它。它从消耗 20 Mb 的 RAM 开始,并且越来越高。
我尝试使用垃圾收集器来(释放)每次返回的值,但这并没有帮助,因为返回值是float
. 我确实尝试将其投射到int
没有成功。
import time
import threading
from tkinter import *
import psutil
import socket
import gc
def running_processes():
for proc in psutil.process_iter():
try:
# Get process name & pid from process object.
processName = proc.name()
processID = proc.pid
print(processName , ' ::: ', processID)
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
def data(start_val):
# Returns the data consumed while connected
start_val = 0
result = 0
global timer
while True:
current_val = psutil.net_io_counters().bytes_sent + psutil.net_io_counters().bytes_recv
result = current_val - start_val + result
start_val = current_val
timer = threading.Timer(1.0, data)
timer.start()
timer.cancel()
return convert_to_mo(result)
def main():
# Runs and displays data
kiss = data(0)
display_label['text'] = str(kiss) + ' || Mo Consumed '
display_label.pack()
app.after(5, main)
#gc.collect(kiss)
def convert_to_mo(value):
# 1 octet = 1 byte = 8 bits // 1024 bytes = 8192 bits = 1 kb;
return value/1000000
app = Tk()
app.title("Data Consumption Monitor")
app.geometry('420x40')
app.configure(background = 'black')
frame = Frame(app)
display_label = Label(frame, font = 'montserrat 20', bg = 'black', fg = '#20C20E')
frame.pack(anchor=CENTER)
running_processes()
main()
app.mainloop()
解决方案
推荐阅读
- dashboard - 在 python 中使用破折号的 Web 应用程序
- scala - zipwithindex 获取 Rdd Key 并获取新的 RDD
- video-streaming - 使用 GStreamer 的“观看”目录并即时解码新的媒体文件
- python - 如何使用 statsmodels ARIMA 预测下一个值?
- reactjs - React hooks linting:它总是有意义吗?
- python - Cloud DataFlowRunner 中的 python-mysql?
- r - 使 R 中的等高线图更高效
- generics - 为什么这个带有泛型的 Kotlin 代码会产生类型不匹配编译器错误?
- r - 矩阵每列最小行的返回索引
- java - 如何在 Android 中的本地文件(从互联网上下载)上使用 PDFRendered?