python线程执行完后释放内存_Python中的线程终止与内存释放
但我注意到,内存并没有释放(gc.get_objects()不断增长)。实际上,这些对象是列表、dict等,而不是文件。在
有没有办法手动释放资源?
代码:import ctypes
def terminate_thread(thread):
"""Terminates a python thread from another thread.
:param thread: a threading.Thread instance
"""
if not thread.isAlive():
return
exc = ctypes.py_object(SystemExit)
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(
ctypes.c_long(thread.ident), exc)
if res == 0:
raise ValueError("nonexistent thread id")
elif res > 1:
# """if it returns a number greater than one, you're in trouble,
# and you should call it again with exc=NULL to revert the effect"""
ctypes.pythonapi.PyThreadState_SetAsyncExc(thread.ident, None)
raise SystemError("PyThreadState_SetAsyncExc failed")
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.result = None
self.error = None
def run(self):
try:
self.result = myfun(*args, **kw) #run external resource and the interrupt it
except Exception as e:
self.error = e
c = MyThread()
c.start()
c.join(60) # wait a minute
counter = 0
if c.isAlive():
while c.isAlive():
time.sleep(0.1)
try:
terminate_thread(c) # how to release resources?
except:
break
counter += 1
if counter > 10: break
raise TimeoutException
输出示例:
^{pr2}$
python线程执行完后释放内存_Python中的线程终止与内存释放相关推荐
- c#中等待某个线程执行完后再执行某个线程
在方法的外部申请一个这样的变量 CountdownEvent latch = new CountdownEvent(3); 比如现在执行的是方法a public void a() { int si=0 ...
- java new一个线程执行完后会自动销毁吗_Java基础总结,超级全的面试题
1. static关键字是什么意思?Java 中是否可以覆盖(override)一个 private 或者是 static 的方法?是否可以在 static 环境中访问非static 变量? stat ...
- python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...
面试官:如让线程顺序执行? 我:使用Thread的join方法. 面试官:除了join还有别的办法吗? 我:目前只用过join. 面试官:哦,那你了解CountDownLatch吗? 我:不了解,没使 ...
- python线程执行完后释放内存_python变量内存地址释放与加速并行计算多线程
1.导入numba和gc包进行并行计算和内存释放 代码如下很容易的: #coding:utf-8 import time from numba import jit, prange, vectoriz ...
- python程序执行完后重头开始做烧饼_下塘烧饼 的动态 - SegmentFault 思否
一.背景 java8的垃圾回收器一般推荐的是parNew+CMS,分别针对新生代和老年代的垃圾回收器.实际生产上,有时需要分析GC日志,检查GC回收有没有引起过多的系统暂停,特别是full GC. 二 ...
- python程序执行完后重头开始做烧饼_Long Way To Go 之 Python 3
集合set 集合是无序的 作用:1.去重 eg. 把list转成set可自动去重 2.关系测试 eg. 交集.并集.差集等 举个栗子:Python班有个名字列表1,Linu ...
- python程序执行完后重头开始做烧饼_从“程序员转行卖烧饼”想到IT人创业
我的一个朋友最近总在跟我念叨着"我不想做开发了,整天累死累活写程序,也攒不下几个钱.我想辞职搞点啥!" 我问他:"你想搞点啥?". 他说:"搞啥都比做 ...
- python程序执行完后重头开始_求教,程序执行到末尾如何重新开始的问题。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求教一下,我这是一个简单的10以内加减法.做对fssx次后,用户输入ok重新开始. 但是重新开始后貌似while语句不会重新起作用.该怎么办呢? impo ...
- 线程执行完之后会释放吗_java多线程并发:CAS+AQS+HashMap+volatile+ThreadLocal,乐分享...
CyclicBarrier.CountDownLatch.Semaphore 的用法 CountDownLatch(线程计数器 ) CountDownLatch 类位于 java.util.concu ...
最新文章
- java socket监控_ZeroMQ(java)中监控Socket
- 基于visual Studio2013解决面试题之1007鸡蛋和篮子
- Oracle查询优化-03操作多个表
- 记录Pandas处理数据的两个小技巧
- 正则匹配问号_爬虫之正则表达式
- 面试之JSP九大内置对象和JSP四大作用域
- python切片的对象_Python 对象切片
- uint32是什么数据类型_C++编程基础: 4. 数据类型
- 专访 Unity 技术总监 Mark Schoennagel、杨栋:基于 Unity 制作影视动画的几点建议!
- 全志JAVA_android 全志a10(2.3.4)开发1(编译环境搭建)
- [转载] python里字典的用法_python中字典(Dictionary)用法实例详解
- NSArray的排序问题
- 新浪SAE sae_debug保存日志
- 年轻人正在双11掀起国潮热
- 【综合类型第 8 篇】陆游和唐婉的故事
- 限制网络带宽的软件Netlimiter
- 趣味测试类微信小程序
- java注解 pdf_使用 iText 复制带注释的 PDF
- PS制作gif动态图
- shopee店铺装修的意义-扬帆志远
热门文章
- 10打开没有反应_【专利】表面施胶剂的反应装置
- 牙齿间隙变大怎么办_牙齿缝隙大怎么办 5个方法解决牙齿缝隙大
- java 异步处理数据格式_spring mvc对异步请求的处理
- python 跳过异常元素继续,在python中的迭代器/生成器中引发异常后继续
- win2003安装邮箱服务器,windows2003邮件服务器
- 介绍计算机的英文文章,计算机方面的英语资料,介绍一些计算机的英语短文,有兴趣的可以看...
- 计算机三级之嵌入式系统学习笔记3
- 取消ajax请求时页面闪烁,用Ajax+js+jQuery实现无闪烁定时刷新页面
- VSCode如何进入到终端中
- JavaSE----属性、方法