python线程执行完后释放内存_线程结束后释放内存

我正在开发的应用程序主要是API,但也有一个多线程后台作业处理系统,用于执行计划的作业以及临时API,它们需要很长时间才能获得即时的API响应。

这将通过金枪鱼分叉10次。任何单个分叉的流程都能够接管要运行的作业,因此,在处理流程与API请求的服务之间,是平衡的。

我面临的挑战是,每个进程将如何继续声明作业处理所需的最大内存量。有些作业需要1.5GB-2GB的内存。

如果有足够的时间,最终所有10个进程都必须处理此类工作,并且每个进程都将占用2GB以上的内存。即使该进程的平均内存使用很少超过100MB。

这些密集型作业仅通过流程中的专用线程运行。

是否有任何机制可以强迫Python在线程关闭时释放专门为线程声明的内存?还是任何强制Python进程仅将内存重置为当时需要的通用机制?

旁注:我也正在探索派生而不是线程,但是到目前为止,这还引入了其他不确定的问题。

解决方案

如果没有有关您的API和辅助进程/线程正在做什么的具体示例,则很难提供特定的答案。

Python是一种引用计数语言:当一个对象未​​被其他任何对象引用时,可以随意进行垃圾回收。可以强制垃圾收集器运行(请参阅https://docs.python.org/3/library/gc.html),但几乎总是最好让它自己做。

当工作线程退出时,线程内创建的任何对象都可能被垃圾回收;唯一的例外是放置在某些全局数据结构中的对象(但是用例听起来并不像您要做的那样)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值