如何解决PHP里大量数据循环时内存耗尽的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决PHP里大量数据循环时内存耗尽的问题相关的知识,希望对你有一定的参考价值。
<?phpmysql_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里大量数据循环时内存耗尽的问题的主要内容,如果未能解决你的问题,请参考以下文章