JVM和Python解释器的硬盘夜话

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容) 内容概要:本文介绍了“两路半桥LLC谐振变换器软开关Simulink仿真”资源包,重点在于基于Simulink平台对两路半桥LLC谐振变换器进行高精度建模与动态仿真,特别考虑了谐振参数不一致及分裂电容等非理想工况对系统性能的影响。该仿真模型不仅涵盖了主电路拓扑、软开关实现机制与谐振网络设计,还深入分析了不同参数配置下系统的启动特性、稳态效率、动态响应及软开关条件的满足情况。通过参数扫描与对比仿真,帮助用户掌握LLC变换器的关键设计要素与优化方法,具备较强的工程指导价值和科研教学意义。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事高频开关电源、新能源变换器、车载充电机等领域的研发工程师和技术人员。; 使用场景及目标:① 掌握两路并联半桥LLC谐振变换器的建模与仿真方法;② 理解软开关技术在提升变换器效率与降低EMI方面的关键作用;③ 分析谐振参数偏差与分裂电容结构对系统均流特性、增益曲线及软开关范围的影响;④ 支持科研项目中的拓扑验证、控制策略开发与故障工况分析; 阅读建议:建议结合Simulink仿真模型与配套说明文档进行学习,重点关注谐振腔参数设置、驱动时序设计及软开关波形观测;可通过调整谐振电感、电容值或引入参数失配,观察系统行为变化,深入理解LLC变换器的稳定边界与优化设计原则。 立即下载

这个电脑的主人是个程序员,他相继学习了C, Java ,Python, Go, 但是似乎停留在Hello World的水平。 

随着hello.c, HelloWorld.java , Hello.py等文件被删除,曾经热闹非凡的硬盘夜话也冷清了起来.....

(码农翻身友情提示:参见文末的硬盘夜话系列文章)

JVM先生

JVM先生发觉有点不太对劲,原来那些围着自己献殷勤的Java文件都不见了。

茫然四顾,也找不到一个可以执行的class文件, JVM先生觉得非常孤独。

到隔壁目录逛逛吧,说不定还有点新发现。 

果然,隔壁目录是正在发呆的Python解释器,JVM先生曾经见主人用它执行过一次Hello.py。

当Python明白JVM先生的处境,不由得幸灾乐祸起来: “看来你活不久了,传说中可怕的卸载很快就会来找你了。”

“怎么可能?你才活不久! 可能你还不知道吧,Hello.py也去回收站享清福了,你现在和我一样,都是孤家寡人!” JVM先生马上反驳, “再说了,主人怎么可能卸载我? Java可是世界上使用者最多的语言。”

“你没看到主人穿的T恤上写的字吗? 人生苦短,我用Python,这已经充分说明一切了。” Python解释器补了一刀。 

“得意什么? 你不就是个小小的解释器吗? 怎么能和我这性能卓越的虚拟机相比?”

“解释器? 你居然当我是解释器? 我明明是虚拟机好不好?别以为只有你有字节码,我也有。”  Python解释器急忙澄清自己的身份。 

“那你还不是解释执行的?” JVM先生有点底气不足。

“你是只知其一,不知其二,我看起来是直接解释执行的,实际上我在背后把Python文件做了编译,也形成了字节码。”

说着,Python给出了一段自己的字节码

LOAD_FAST       0 (x)
LOAD_FAST       1 (y)
BINARY_ADD
LOAD_CONST      1 (10)
BINARY_MULTIPLY
RETURN_VALUE

经验老道的JVM先生一眼就看出来,这是基于栈的虚拟机!

你看它先把x, y 两个变量从某个地方给取出来,压入栈中, 然后弹出,做加法运算,把结果也压入栈中。 

接下来把常量10 压入栈中,把上个结果(x+y) 和10 进行相乘, 最后返回。

其实这段代码表达的就是 (x+y)*10 ! 和自己的JVM字节码真是非常像!

(码农翻身友情提示: 在《我是一个Java Class》中对基于栈的操作有漫画描述)

虽然胸有激雷, 但JVM压抑着努力做到面如平湖, 他淡淡地说:这不就是 (x+y)*10 嘛!

垃圾回收

“哈哈,我就知道老兄你一眼就能看透, 除此之外,我也有垃圾回收呢,主人只需要把对象创建起来,根本不用管什么时候把对象占据的空间和释放掉。” Python再次抛出炸弹。

“垃圾回收?你是怎么做垃圾回收的? ” JVM先生一下子兴奋起来,这可是他最厉害的领域之一,Python竟然敢班门弄斧!

“我主要使用简单明了的引用计数法。” Python很得意。

所谓引用计数法就是给每个对象都增加一个“引用计数”的字段,每次有新的变量指向了对象A,A的引用计数就会加一,变量指向了别的对象,A的引用计数就是减一,当引用计数为0 ,就意味着对象A可以被回收了。 

1a1 = ClassA()   # a1指向对象(简称对象A)的引用计数为 1
2a2 = a1         # a1,a2 指向同一个对象,对象A引用计数为 2
3a1 = ClassB()   # a1 指向新的对象, 对象A的引用计数变为1

(可左右滑动)

“看起来简单,实际上一点都不简单,每次遇到变量的赋值操作的时候,你都得把增加新对象的引用计数,还得减少老对象的引用计数,更要命的是循环引用问题, 你怎么解决?”  JVM先生问道。

1a = ClassA()   # 对象A的引用计数为1
2b = ClassB()   # 对象B的引用计数为1
3a.t = b        # 对象B的引用计数为2
4b.t = a        # 对象A的引用计数为2
5del a          # 对象A还在被b所引用,引用计数还是为1,无法删除
6del b          # 对象B还在被a所引用,引用计数还是为1,无法删除

(可左右滑动)

Python嘿嘿一笑:“我不是说了吗,我主要是引用计数,我还有标记-清除,分代回收等算法作为辅助呢,从一个根集合开始,查找还被引用的,需要存活的对象...... 想来你是十分熟悉了。”

JVM先生当然很熟悉,想想自己的年轻代(里边还要划分成eden,survivor),年老代,Minor GC,Full GC,各种各样的垃圾收集器Serial、PraNew、Parallel Scavenge,Serial Old、Parallel Old、CMS,各种各样的参数调优,经常把新手搞得眼花缭乱,又兴奋又迷茫。 

没想到这小子也有一套标记-清除,分代回收,看来在理论基础上就难于压倒他了。 

“可是,网上讨论Java 垃圾回收的文章铺天盖地,为什么很少人讨论Python垃圾回收的参数,调优啊?是不是你做得不怎么样啊?”  JVM先生很疑惑。

“嘿嘿,那是因为我就不给Python程序员提供那些烦人的调优选项,你只要用就行了,难道你写个Python脚本还要关注垃圾回收吗? 没必要! 人生苦短,我用Python,很有道理!”

GIL

“既然你用引用计数,怎么处理多个线程同时修改一个对象的引用计数问题? 如果引用计数被错误地修改, 很可能会导致一个对象一直不被回收,或者回收了一个不能被回收对象。 难道你在每个对象上都加了一把锁? 只让一个线程进入修改?”  JVM 的思考颇有深度。

“嘿嘿,我没有在每个对象上都加锁,每次访问都加锁、解锁,开销太大! 并且还很容易引发死锁。相反, 我只设置了一把锁,Global Interpreter Lock ,简称GIL, 这把超级大锁只允许一个线程获得Python解释器的控制权, 简单来说,同一时刻,只有一个线程能运行!”

“同一时刻,只有一个线程能运行? ” JVM简直不敢相信,这绝对颠覆了自己的世界观和人生观。 

用户写了多线程的程序,如果CPU有多核,只有一个线程执行,怎么利用多核?  是为了实现“一核有难,多核围观”吗? 

线程切换的时候还得释放GIL,竞争GIL,多线程可能跑得比单线程都慢了! 要多线程有什么用? 

“其实也没什么大不了的,老兄你也知道,这程序的瓶颈啊,它不在CPU, 而在于IO, 就是用户的输入,数据库的查许,网络的访问, 线程等到有IO操作的时候,放弃GIL这个超级大锁,让别的线程去执行就是了。”

640?wx_fmt=png

“那要是有个CPU密集型的线程在执行,根本没有I/O, 一直霸占着GIL不放,那该怎么办? ”  JVM先生问道。

“放心吧,我肯定不能让他霸占着CPU不放,我也得给别的线程一个机会运行。 具体的做法也很简单,每当线程执行了100 ticks, 就需要释放这个GIL。”

“tick ? 是时钟周期吗?”  

“不是时钟周期,是和我的字节码相关的,一个tick映射到一条或多条字节码。”

“当线程A执行了100个ticks以后,你就让他放弃GIL,然后具体怎么处理?”  JVM先生刨根问底。 

“然后我就发个信号给操作系统老大喽,让他去调度那些因为没有获得GIL锁而挂起的线程,大家去竞争这把锁,当然线程A也会参与竞争,大家都站在同一个起跑线上,谁获得了GIL, 谁就可以执行了。 ”

640?wx_fmt=png

JVM觉得Python的这种作法实在是古怪,操作系统老大本来有一套自己的线程调度的策略,现在你为了让线程释放GIL, 又来搞个什么ticks,  把简单的东西给变复杂了啊。 

JVM先生很快想到另外一个问题: “线程A也会参与竞争?! 那要是在多核情况下,被分配到其他核的线程由于需要等待信号,唤醒以后才能竞争,线程A会不会经常抢先,‘打压’别的线程,让它们难以抬头,难以运行? ”

640?wx_fmt=png

Python不由得佩服JVM,它在这方面知识储备真厉害,一下子就抓住了关键的小尾巴。他尴尬地笑了笑: “嗯,有这个可能。 ”

JVM从打心底鄙视这种GIL的全局锁,太不讲人性了。 

“如果真想利用多核的特性,还想避开GIL, Python专家建议,还是用多进程吧! ”  Python无奈地说道。 

“多进程? 你要知道每个进程都是独立的,数据共享起来比线程要麻烦得多! 程序不经过大改动是不行的。 你们怎么不把这个不讲人性的GIL给去掉啊??”

“哎呀,不好改啊,历史遗留问题了, 我们Python诞生于上世纪90年代初,比你Java 还早。 Python的设计目标就是易于使用,易于扩展,很多用C语言写的扩展库被开发出来,由于有GIL, 这些扩展库都不必考虑线程安全问题,很容易被集成进来。”

看来存在就是合理的,C的扩展库极大地丰富了Python的功能,促进了Python的发展和使用。

但是随之多核的出现和流行,GIL慢慢地不合时宜了。关键是现在想去修改也很难了。 

“那你们有没有计划,什么时候把GIL给干掉?”

“我觉得等到Python 3000也许有戏。”  Python开玩笑,他还挺乐观。 

JVM先生突然想到一件事情:“我听说你们Python语言在我的JVM上也有实现,叫做什么Jython,它有GIL的限制吗?”

“Jython啊,他在底层都被编译成你的Java字节码了,在你的虚拟中运行,是没有GIL的。”

“哼哼,还是我的平台厉害吧!” JVM先生很得意。

尾声

两人正聊得热火朝天, 突然看到主人回到电脑前,拿起鼠标,敲起键盘,不知道要做什么事情。

两人非常紧张,惴惴不安地迎接最终的审判: 卸载。 

可怕的卸载并没有来临, 相反,电脑里入住了两个IDE, 一个是IntelliJ IDEA, 还有一个是PyCharm,两人不由得欢呼起来: 看来主人并不打算抛弃我们,而是要用IDE做点大项目了!

相关阅读:

C老头和Java小子的硬盘夜话

Python和Java的硬盘夜话

90后“老头儿”和00后Go小子的硬盘夜话

参考资料:

https://www.youtube.com/watch?v=ph374fJqFPE

https://realpython.com/python-gil/  

(完)

你看到的只是冰山一角, 更多精彩文章,请移步《2016文章精华》或者《2017文章精华》

双向全桥CLLC谐振变换器仿真模型(Simulink仿真实现) 内容概要:本文系统介绍了双向全桥CLLC谐振变换器的Simulink仿真模型,重点阐述了变频控制、闭环仿真及其与多种电力电子拓扑(如维也纳整流器、DAB变换器、图腾柱PFC等)的联合仿真设计。资源包涵盖2.5kW双向全桥LLC、V2G电动汽车充放电系统、三相PFC、多相交错LLC等多种变换器的仿真案例,并深入展示了三电平VIENNA整流器在双闭环PI控制与SVPWM调制策略下,结合上下电容电压差值补偿实现中点电位平衡的先进控制方法。通过仿真验证,该策略不仅有效维持了800V直流母线电压的稳定,还在动态工况下显著提升了电容电压的均衡度,同时保持了较低的输入电流THD,充分体现了SVPWM与中点平衡控制协同优化的技术优势。; 适合人群:具备电力电子与自动控制理论基础,从事新能源发电、电动汽车、工业电源、微电网等领域的研究生、工程师及科研人员。; 使用场景及目标:① 学习并构建高频谐振变换器(如LLC、CLLC)的Simulink仿真模型,掌握其变频与混合控制策略;② 深入理解并应用中点电位平衡、双闭环PI控制、SVPWM调制等核心技术于VIENNA等三电平变换器中;③ 复现高水平期刊论文中的控制算法,服务于科研项目申报、学术论文撰写或工程产品开发。; 阅读建议:该资源为综合性仿真资料库,建议使用者结合自身研究方向(如电动汽车充电、新能源并网)选择对应案例进行精学,重点关注控制策略的设计逻辑、仿真参数的整定方法以及SVPWM与中点平衡的协同机制,并充分利用附带的计算书和参考文献深化理解,以实现从仿真模型到实际工程应用的顺利转化。 立即下载

相关推荐

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

Java虚拟机(JVM)和Python解释器有什么区别?

在Java中始终使用"虚拟机"时,很少会读到Python"虚拟机"。 两者都解释字节码(一个是解释Java 一个是解释Python); 为什么一个叫虚拟机,另一个叫解释器(Interpreter)? 注意 这里的"虚拟机"是指处理虚拟机,而不是系统虚拟机(例如Qemu或Virtualbox)。进程虚拟机是只是提供一般编程环境的程序-程序可以编程。 下面详细解释以下两种叫法的起源: Java具有解释器和虚拟机,而Python具有虚拟机机器和口译员。之所以"虚拟机"更多Java中的通用术语,而"解释器"是Pyt

Tech in Pieces 3868

[LaTeX] 调整参考文献的格式(References),包括作者名缩写,行距,字体,引用顺序等等

在此记录我对LaTeX中参考文献references的尝试,主要涵盖如题几个方面。

the Blog of 等不到天亮丶等时光 4万+

Python的各种解释器及其特点总结(详细)

例如,CPython 是最常用的解释器,也是默认的 Python 解释器,Jython 可以与 Java 应用程序无缝集成,IronPython 可以与 .NET 框架无缝集成,PyPy 可以加速 Python 程序的运行速度,MicroPython 可以运行在微控制器上。因此,它可以在Java平台上使用 Python语言编写的程序。需要注意的是,在Python解释器中执行代码与在Python脚本中执行代码有所不同,因为Python解释器会一次执行一行代码,而Python脚本会一次执行整个文件。

zy1992As的博客 2344

Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification

对比式视觉-语言预训练,也称为CLIP,通过大规模的图像-文本对来学习视觉表示,为zero-shot知识迁移展示了新的范式。它在下游任务上展现出令人瞩目的性能,实现了zeri-shot的知识迁移。为了进一步增强CLIP的适应能力,现有方法提出了微调可学习模块的方法,显著提高了少样本情况下的性能,但也引入了额外的训练时间和计算资源。在本文中,我们提出了一种适用于CLIP的无需训练的少样本分类方法,称为Tip-Adapter。

qq_43800752的博客 1165

Scipy优化踩坑实录:trust-constr和SLSQP约束定义到底差在哪?

本文深入解析了Scipy优化模块中trust-constr和SLSQP两种方法在约束定义上的差异。通过对比面向对象的trust-constr和字典式定义的SLSQP,揭示了它们各自的优势与适用场景,帮助开发者在有约束优化问题中选择合适的算法,提升计算效率与准确性。

weixin_42573113的博客 271

Python 解释器:Jython

凭借这种设计,Jython 可以与 Java 语言实现无缝互操作,让 Python 开发者能够直接使用 Java 类库。然而,由于 Jython 目前停留在 Python 2.7 版本,并未支持 Python 3,因此在现代 Python 项目中应用有限。Jython 是运行在 JVM 上的 Python 解释器,它最大的优势是能够直接与 Java 语言互操作,使 Python 开发者可以调用丰富的 Java 类库。,因此 Jython 程序可以像 Java 程序一样运行在任何安装了 JVM 的平台上。

qq_41176800的博客 975

【CarMaker实战指南】从零构建环形测试场景与车辆连续仿真

本文详细介绍了如何使用CarMaker软件从零构建环形测试场景与实现车辆连续仿真。通过分步指导搭建闭环道路、连接交叉路口、规划车辆轨迹等核心操作,帮助用户掌握CarMaker的基础应用技巧,并提供了常见问题排查与进阶优化建议,适用于车辆耐久性测试和自动驾驶算法验证等场景。

weixin_29274969的博客 235

凭啥Java的运行环境称虚拟机,Python的只能称解释器

看到Stackoverflow上有个问题在讨论Java和Python的对比,其中就有人问答为啥Java的运行环境被称之为JVM,而Python的只能叫做Interpreter。这个问题估计想过的人不多,先找维基百科看一下虚拟机的定义。虚拟机的定义有2个,一种是类似Vmware的系统虚拟机,另一种是虚拟机称之为程序虚拟机,诸如JVM,CLR就是最常见到的虚拟机。程序虚拟机也称作托管运行时环境,运行这...

weixin_33709219的博客 518

一文读懂AI大模型时代的RAG技术

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合检索技术与生成模型的技术架构,旨在通过动态引入外部知识库增强大语言模型(LLM)的生成能力。其核心思想是通过检索系统从外部数据源(如企业知识库、实时文档等)获取相关信息,并将检索结果作为上下文输入生成模型,以提高生成答案的准确性、时效性和专业性

awei0916的专栏 2120

解决PubMed卡在“正在检查浏览器”页面的完整排查指南

DNS解析是将域名转换为IP地址的基础网络服务,其稳定性和准确性直接影响网站访问。当DNS服务器响应缓慢或返回异常结果时,可能导致客户端与服务器建立连接时出现偏差,从而触发网站的安全验证机制,例如Cloudflare等安全服务提供的浏览器环境检查。这一机制旨在防御恶意流量,但偶尔也会误拦截正常访问。在生物医学信息检索领域,PubMed作为核心文献数据库,其稳定访问对科研工作流至关重要。针对因DNS或本地缓存问题导致的‘正在检查浏览器’页面卡顿,通过刷新DNS缓存、更换为Google Public DNS或C

weixin_29597551的博客 3737

解释器vs编译器 && C,java,python编译过程对比

编译器/解释器区别 JVM/PVM/Shell/C 编译运行过程对比

siyu1993的博客 1979

最速下降法、牛顿法、拟牛顿法,Python实现高维二次目标函数优化

原理什么的就不说了,只有代码。。。 十元二次目标函数,求极小值点。 1.最速下降法 import random import numpy as np import matplotlib.pyplot as plt from sympy import * def goldsteinsearch(f, df, d, x, alpham, rho, t): flag = 0 a = 0 b = alpham fk = f(x) gk = df(x)

我乐飞的技术博客 2244

什么是JVM、Java编译器和Java解释器

JVM:够运行Java字节码(Java bytecode)的虚拟机 Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。 Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简

赵庆春 1万+

【数据集介绍】MVTec 3D AD数据集介绍

MVTec AD(MVTec Anomaly Detection)数据集是用于异常检测的计算机视觉数据集。该数据集包含来自工业生产中不同材料和产品的图像,包括玻璃、塑料、纺织品等。每个类别都包含正常样本和异常样本。这些异常样本包括各种常见的生产缺陷,如划痕、裂纹、凹陷等。MVTec AD数据集旨在帮助研究人员和从业者开发和评估用于检测工业制造中物体缺陷的算法和系统。

原来也有北瓜 7755

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python垃圾回收与java比较_java语言对比,jvm,垃圾回收

1.java/c++/ruby/python集中语言的对比java和c++1,没有指针2,没有多继承3,没有const4,在实现多态上的区别 tc++里面的虚函数,纯续函数和java里面的多态5,java以类为基本单位,c++以方法为基本单位java和rubyjava和python2,java运行机制与jvmjvm是实现java跨平台特性的关键。java既是解释性语言,也是编译型语言。或者说...

weixin_39692172的博客 137

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java比python快多少倍_java为什么比python快

详细内容Python慢,这几种是常见的原因:“因为它是GIL(全局解释器锁)”,“因为它是解释语言不是编译语言”,“因为它是动态类型语言”。推荐课程:Java教程。究竟哪个原因对性能的影响最大?“因为它是GIL”现代计算机的 CPU 有多个核心,有时甚至有多个处理器。为了利用所有计算能力,操作系统定义了一个底层结构,叫做线程,而一个进程(例如 Chrome浏览器)能够生成多个线程,通过线程来执行系...

weixin_28876369的博客 2066

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python垃圾回收与java比较_JVM垃圾回收机制和python的垃圾回收

1. 首先这是一个特别热门的面试考点,这个问题只要回答的全面基本上这一轮面试就过了2. JVM内存模型其中线程共享的和线程私有的两大模块,方法区,堆是共享的虚拟机栈,本地方法栈,程序计数器是私有的垃圾回收必然是再共享模块中进行的,方法区是加载类模板的这些一般不会被回收只有我们的堆(heap)是不停创建对象的,所以只有堆这一块涉及到垃圾回收3.堆(heap)JVM内存划分为堆内存和非堆内存...

weixin_36140403的博客 609

为什么java的字节码解释器叫虚拟机,而像python的却只叫解释器

为什么java的字节码解释器叫虚拟机,而像python的却只叫解释器 因为jvm在设计上按一台真正的机器去设计,可以解析一系列指令,类似于汇编指令。而python虽然也有编译器然后生成中间代码但是它不是按照一台真正的机器指令去设计的,脱离了虚拟机它是不能在硬件上直接运行的,而jvm如果要是有硬件可以去解析字节码那么它是可以在硬件上运行的。所以java的字节码解释器叫虚拟机,而像python、ph...

老徐的博客 2524

JVM下调用python之Jython

JVM下调用python之Jython JVM下调用python之Jython 1、Maven添加Jython包 2、编写python代码 3、在Java IDE编写代码执 Python 件。 1、Maven添加Jython包 打开 pom.xml,在 <dependencies></dependencies&amp

记录日常的点点滴滴 1942

python为什么要用虚拟机_为何Python不像JVM那样推出个“虚拟机版”?

你要是在windows下的python下装opencv,opengl,tensorflow,mxnet,pytorch,openssl,boost.python,numpy mkl,cython,这些可能汲及编译c/c++的库,可能会出现各种问题,解决起来会非常耗时间,而且可能引用库会相互冲突,最好用conda创建虚拟环境安装。python底层如数据分析,机器学习,人工智能有大量的c语言运行环境包...

weixin_39521651的博客 932

凭什么别的虚拟机叫虚拟机,Python的叫解释器?

为什么Java里面的JVM就叫虚拟机,Python的叫解释器呢?讲道理,这个格调听着有差一条街的 一个.py文件运行的生命周期 1)python.exe解释器先把.py文件中的code编译为字节码。 2)字节码文件再被python.exe执行:这个时候解释器接收到的字节码文件都是PyCodeObject为单位的,一个一个执行。什么是PyCodeObject,举个例子好比,你有一个孩子(对象),你的...

weixin_33919950的博客 5655

python的反射机制

转载自:http://www.cnblogs.com/feixuelove1009/p/5576206.html   对编程语言比较熟悉的朋友,应该知道“反射”这个机制。Python作为一门动态语言,当然不会缺少这一重要功能。然而,在网络上却很少见到有详细或者深刻的剖析论文。下面结合一个web路由的实例来阐述python的反射机制的使用场景和核心本质。 一、前言 ...

weixin_30444105的博客 501
上一篇: 哪些人创业更可能成功?
下一篇: 每年都学习一门新的语言,到底有什么用?
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值