- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我开始使用 ray 进行分布式机器学习,但我已经遇到了一些问题。内存使用量一直在增长,直到程序崩溃。虽然我不断地清除列表,但内存不知何故泄漏。知道为什么吗?
我的规范:操作系统平台和发行版:Ubuntu 16.04Ray 安装自:二进制射线版本:0.6.5Python版本:3.6.8
我已经尝试使用实验队列而不是 DataServer 类,但问题仍然相同。
import numpy as np
import ray
import time
ray.init(redis_max_memory=100000000)
@ray.remote
class Runner():
def __init__(self, dataList):
self.run(dataList)
def run(self,dataList):
while True:
dataList.put.remote(np.ones(10))
@ray.remote
class Optimizer():
def __init__(self, dataList):
self.optimize(dataList)
def optimize(self,dataList):
while True:
dataList.pop.remote()
@ray.remote
class DataServer():
def __init__(self):
self.dataList= []
def put(self,data):
self.dataList.append(data)
def pop(self):
if len(self.dataList) !=0:
return self.dataList.pop()
def get_size(self):
return len(self.dataList)
dataServer = DataServer.remote()
runner = Runner.remote(dataServer)
optimizer1 = Optimizer.remote(dataServer)
optimizer2 = Optimizer.remote(dataServer)
while True:
time.sleep(1)
print(ray.get(dataServer.get_size.remote()))
运行一段时间后,我得到这个错误信息:
最佳答案
我最近遇到了类似的问题,发现如果您经常放置大型对象(使用 ray.put()
),您需要:
手动调整 python 垃圾收集器使用的阈值
定期调用 gc.collect()
。
我实现了一个检查已用内存量然后调用垃圾收集器的方法。
问题是默认阈值是基于对象的数量,但是如果你放置大对象,gc 可能永远不会被调用,直到你用完内存。我的实用方法如下:
def auto_garbage_collect(pct=80.0):
"""
auto_garbage_collection - Call the garbage collection if memory used is greater than 80% of total available memory.
This is called to deal with an issue in Ray not freeing up used memory.
pct - Default value of 80%. Amount of memory in use that triggers the garbage collection call.
"""
if psutil.virtual_memory().percent >= pct:
gc.collect()
return
当涉及到通过 ray.put() 推送大对象并耗尽内存时,调用它可以解决问题。
关于python - 如何解决 ray 内存使用量不断增长的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55749394/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!