python判断内存泄漏_如何检测python代码中的内存泄漏?

这篇博客探讨了一个新手在使用Python进行机器学习对象预测时遇到的内存泄漏问题。作者在尝试预测汽车图片时,代码在处理大约20张图片后因内存泄漏导致系统崩溃。他们使用了Pyplertracker来追踪内存占用,但问题依然存在。博客内容包括数据库连接、图片下载、ResNet模型预测以及更新数据库的过程。作者寻求解决方案以确保代码能处理整个数据库中的大量图片。
摘要由CSDN通过智能技术生成

我对机器学习和python都是新手!我希望我的代码能够预测对象,在我的例子中,主要是汽车。

当我启动脚本时,它运行得很顺利,但是在20多张图片之后,由于内存泄漏,它挂断了我的系统。

我希望这个脚本运行到我的整个数据库,这是远远超过20张图片。在

我尝试过Pypler tracker来跟踪哪些对象占用了最多的内存-

这是我试图运行的代码来预测图片中的对象:from imageai.Prediction import ImagePrediction

import os

import urllib.request

import mysql.connector

from pympler.tracker import SummaryTracker

tracker = SummaryTracker()

mydb = mysql.connector.connect(

host="localhost",

user="phpmyadmin",

passwd="anshu",

database="python_test"

)

counter = 0

mycursor = mydb.cursor()

sql = "SELECT id, image_url FROM `used_cars` " \

"WHERE is_processed = '0' AND image_url IS NOT NULL LIMIT 1"

mycursor.execute(sql)

result = mycursor.fetchall()

def dl_img(url, filepath, filename):

fullpath = filepath + filename

urllib.request.urlretrieve(url,fullpath)

for eachfile in result:

id = eachfile[0]

print(id)

filename = "image.jpg"

url = eachfile[1]

filepath = "/home/priyanshu/PycharmProjects/untitled/images/"

print(filename)

print(url)

print(filepath)

dl_img(url, filepath, filename)

execution_path = "/home/priyanshu/PycharmProjects/untitled/images/"

prediction = ImagePrediction()

prediction.setModelTypeAsResNet()

prediction.setModelPath( os.path.join(execution_path, "/home/priyanshu/Downloads/resnet50_weights_tf_dim_ordering_tf_kernels.h 5"))

prediction.loadModel()

predictions, probabilities = prediction.predictImage(os.path.join(execution_path, "image.jpg"), result_count=1)

for eachPrediction, eachProbability in zip(predictions, probabilities):

per = 0.00

label = ""

print(eachPrediction, " : ", eachProbability)

label = eachPrediction

per = eachProbability

print("Label: " + label)

print("Per:" + str(per))

counter = counter + 1

print("Picture Number: " + str(counter))

sql1 = "UPDATE used_cars SET is_processed = '1' WHERE id = '%s'" % id

sql2 = "INSERT into label (used_car_image_id, object_label, percentage) " \

"VALUE ('%s', '%s', '%s') " % (id, label, per)

print("done")

mycursor.execute(sql1)

mycursor.execute(sql2)

mydb.commit()

tracker.print_diff()

这是我从一张图片中得到的结果,它在一些迭代之后消耗了整个RAM。我该怎么做才能阻止泄漏?在

^{pr2}$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值