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

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

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

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

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

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

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

解决方案

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

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

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

python线程执行完后释放内存_线程结束后释放内存相关推荐

  1. 线程执行完之后会释放吗_java多线程并发:CAS+AQS+HashMap+volatile+ThreadLocal,乐分享...

    CyclicBarrier.CountDownLatch.Semaphore 的用法 CountDownLatch(线程计数器 ) CountDownLatch 类位于 java.util.concu ...

  2. Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执行...

    Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执行 Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执 ...

  3. Java多线程面试题之如何让主线程等子线程执行完之后再执行

    问题描述 现在有一个主线程X,和两个子线程A和B,A和B之间没有依赖关系且两者的执行时间不确定,现在要求如下: 1:不限制A和B执行顺序的 2:主线程X需要在子线程A和B执行完成之后再执行 方案1 1 ...

  4. java进阶 线程池 join用法总结:thread4.join();方法,就表明thread4.join();这个线程受到贵客待遇,直到这个线程执行完,被插入这个方法的载体线程才可以执行。

    那个线程调用join 举例 thread4.join();方法,就表明thread4.join();这个线程受到贵客待遇,直到这个线程执行完,被插入这个方法的载体线程才可以执行. package ja ...

  5. java主线程控制子线程_CountDownLatch控制主线程等子线程执行完--Java多线程

    1.[代码]CountDownLatch控制主线程等子线程执行完--Java多线程 package com.sihuatech.common; import java.util.concurrent. ...

  6. hashmap是线程安全的吗?怎么解决?_线程安全及三种解决方案

    线程安全:如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 线程安全问题都是由全局变量及静 ...

  7. java线程三种方法,Java基础_线程的使用及创建线程的三种方法

    线程:线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 进程:进 ...

  8. python程序执行完后重头开始做烧饼_下塘烧饼 的动态 - SegmentFault 思否

    一.背景 java8的垃圾回收器一般推荐的是parNew+CMS,分别针对新生代和老年代的垃圾回收器.实际生产上,有时需要分析GC日志,检查GC回收有没有引起过多的系统暂停,特别是full GC. 二 ...

  9. python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...

    面试官:如让线程顺序执行? 我:使用Thread的join方法. 面试官:除了join还有别的办法吗? 我:目前只用过join. 面试官:哦,那你了解CountDownLatch吗? 我:不了解,没使 ...

  10. java new一个线程执行完后会自动销毁吗_Java基础总结,超级全的面试题

    1. static关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是 static 的方法?是否可以在 static 环境中访问非static 变量? stat ...

最新文章

  1. JNI传递字符串数组J-StringArray
  2. LoadRunner性能测试-Std. Deviation标准差
  3. sympy特点及简单使用
  4. 镶套iframe 鼠标滚动无效解决办法
  5. python获取图片某像素点位置_如何在python中获取图像中指定区域内的所有像素坐标?...
  6. Visual Studio2017 配置OpenGL
  7. 【安全】Web渗透测试(全流程)
  8. DNF最新纯图色脚本框架2022-4-27
  9. 西门子V20变频器Modbus通信的配置和报文
  10. 免费\无限\开源的网页聊天工具Rocket.Chat安装
  11. Crontab 每隔整点1小时2小时执行一次任务
  12. linux控制NVme硬盘点灯,一种实现多NVMe硬盘背板点灯的设计方法与流程
  13. linux ps4模拟器下载地址,PS4模拟器PC版下载
  14. java检测自身签名_使用签名检测PDF更改
  15. 请简述python数据分析流程_简单案例讲解Python数据分析的基本步骤
  16. 修改计算机桌面壁纸影响计算机考试吗,若何修改调换计算机桌面背景图片
  17. mysql命令行不支持中文_解决MySQL命令行不支持中文的问题
  18. vue项目中使用ckplayer.js封装视频播放组件
  19. 深圳软件测试培训:JavaScript中变量和作用域
  20. 合并与拆分数据模型(MSDM:Merging Spliting Data Modeling)

热门文章

  1. 一些linux牛皮糖
  2. 人人都可以成为记忆高手--罗马室记忆法则
  3. 点估计与区间估计、置信区间、置信水平
  4. 天刃_张志刚_SEO优化技巧
  5. run `npm fund` for details
  6. 如何使用pdf转换器
  7. 用c 语言乘法运算结果,c中的基本运算
  8. 联想用u盘重装系统步骤_联想笔记本u盘重装系统,详细教您联想笔记本怎么使用u盘重装系统...
  9. 差生的 8 年程序员总结
  10. [Game Engine]开源游戏框架(转至wiki)