如何解决PHP里大量数据循环时内存耗尽的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决PHP里大量数据循环时内存耗尽的问题相关的知识,希望对你有一定的参考价值。

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());//连接你的数据库

mysql_select_db("mydb");//选择你的数据库

$result = mysql_query("SELECT `name` FROM data_boy WHERE `id`='2' LIMIT 0, 60");//执行SQL查询语句,搜索出60条数据

while ($row = mysql_fetch_array($result))

echo "姓名:".$row[name]."<br>";
/*补充一句,此处也可以是:
echo "姓名:".$row[0]."<br>";此处"mysql_fetch_array"默认返回的既有 关联数组(字段作为键名),也有数字索引数组*/


mysql_free_result($result);//释放结果
参考技术A 用mysqli_use_result去查询

我想读取大量图像进行深度学习,但是当内存不足时,如何解决?

【中文标题】我想读取大量图像进行深度学习,但是当内存不足时,如何解决?【英文标题】:I want to read a large amount of images for deep learning, but what is the solution for when there is insufficient memory? 【发布时间】:2018-05-09 04:23:30 【问题描述】:

在用python编写的深度学习程序中,我想一次将大量图像数据存储在numpy数组中,并从该数组中随机提取批量数据,但是图像数据太大,内存耗尽。 我们应该如何处理这种情况?每次取回batch数据我都只能做IO处理,从存储中读取图片数据?

【问题讨论】:

当内存快用完时,操作系统会自动开始将数据移动到硬盘。这是最坏的情况,尤其是您的硬盘很慢,每个应用程序都会变慢。这也会消耗 CPU 资源。所以至少你必须控制数据量不要达到最大内存大小。 【参考方案1】:

文件 I/O 可以解决问题,但会减慢学习过程,因为文件 I/O 是一项需要很长时间的任务。

但是,您可以尝试使用多线程来实现两者的混合,例如

https://github.com/stratospark/keras-multiprocess-image-data-generator

(不知道你用的是什么框架)。

总之回到基本思路:

挑选一些随机文件并阅读它们,开始训练。在训练期间启动第二个线程,它将再次读出随机文件。因此,您的学习线程不必等待新数据,因为训练过程可能比阅读过程花费更长的时间。

一些框架已经实现了这个功能,看看:

https://github.com/fchollet/keras/issues/1627

或:

https://github.com/pytorch/examples/blob/master/mnist_hogwild/train.py

【讨论】:

谢谢你的回答。我用的是tensorflow。 blog.metaflow.fr/…

以上是关于如何解决PHP里大量数据循环时内存耗尽的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JDBC 将大量数据加载到文件中而不会耗尽内存?

如何使用 Python Ray 在不耗尽内存的情况下并行处理大量数据?

求 php 循环执行大量数据 解决办法。

使用 matplotlib 绘制大量点并耗尽内存

php一次性大量数据入库解决方法

如何将大量数据封送到XML