首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spark+Python设置GC存储阈值

Spark+Python设置GC存储阈值
EN

Stack Overflow用户
提问于 2017-08-05 11:30:58
回答 1查看 583关注 0票数 1

我正在尝试运行一个Python (PySpark应用程序),它占用了太多内存,而我的应用程序因为超出内存限制而被扼杀了(为了能够产生更多的工作人员,我试图降低内存使用率)。

我来自Java/Scala,所以Python的工作方式与我头脑中的JVM类似.

有没有办法告诉Python它有多少“可用内存”?我是说,当你的堆大小几乎满的时候。我想在Python上执行同样的操作,这样that就不会因为当内存是垃圾时使用太多内存而扼杀我的应用程序(我在Python3.3上,内存引用@我的机器)。

我已经看到了资源的硬和软限制,但没有文档说明GCs是否触发了它们。AFAIK通过内存使用触发GC,any1知道怎么做吗?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-05 11:45:49

CPython (我假设这是您使用的)与Java有很大的不同。主要的垃圾收集方法是参考计数。除非您处理循环引用(在正常的PySpark工作流中不常见),否则根本不需要完整的GC清理(数据相关对象应该在数据溢出/被腌制后收集)。

星星之火也会杀死闲置的Python工作人员,即使您启用了重用选项,因此它经常完全跳过GC。

可以使用CPython方法控制set_threshold垃圾收集行为:

代码语言:javascript
运行
复制
gc.set_threshold(threshold0[, threshold1[, threshold2]]

或者用collect手动触发GC扫描

代码语言:javascript
运行
复制
gc.collect(generation=2)

但根据我的经验,PySpark中的大多数GC问题来自于JVM部分,而不是Python。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45521402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档