随笔分类 -  python编程

该分类用于存放python编程相关的一些知识点和笔记
摘要:Cython与C函数的结合这篇文章介绍了Python-Cython-C三种语言的简单耦合,以Cython为中间接口,实现Python数据传到C语言的后端执行相关计算。这就相当于可以在Python中调用C语言中的指针功能来进行跨维度的数组运算,至于性能依然存在优化空间,这里仅仅做一个简单的功能演示。 阅读全文
posted @ 2024-07-25 15:14 DECHIN 阅读(679) 评论(0) 推荐(0)
摘要:使用Cython加速谐振势的计算本文介绍了一下使用Cython对Python/Numpy实现的函数进行加速的一个简单案例,模型使用的是一个弹性系数全同的谐振势,然后计算总势能。从计算结果来看,使用Cython确实可以获得更接近于C语言的速度,并且编程逻辑还可以大幅的保留Python的语法。 阅读全文
posted @ 2024-07-24 14:52 DECHIN 阅读(134) 评论(0) 推荐(0)
摘要:Python循环控制本文介绍了Python编程语言中关于for循环和if条件控制的一些基本使用。包含了单层循环的退出机制和多层循环的退出机制,使得我们在满足特定条件时,可以直接结束多层循环。 阅读全文
posted @ 2024-07-15 17:31 DECHIN 阅读(705) 评论(0) 推荐(1)
摘要:一个用来画拉氏图的简单Python脚本这里我提供了一个用于画拉氏图的Python脚本源代码,供大家免费使用。虽然现在也有很多免费的平台和工具可以用,但很多都是黑箱,有需要的开发者可以直接在这个脚本基础上二次开发,定制自己的拉氏图绘制方法。 阅读全文
posted @ 2024-07-05 16:04 DECHIN 阅读(620) 评论(0) 推荐(0)
摘要:Cython编译报错“numpy/arrayobject.h: No such file or directory”解决方案本文介绍了一个在使用Cython进行Python高性能编程时有可能遇到的一个问题,就是找不到的对应的C语言的头文件,例如numpy中的一些头文件。解决思路就是先在本地找到相应的头文件路径,然后将其添加到编译器的环境变量中即可。 阅读全文
posted @ 2024-06-26 10:03 DECHIN 阅读(653) 评论(1) 推荐(0)
摘要:Python作图三维等高面在一维空间下,我们要表示密度时可以给出一个二维的函数y=f(x),画出来是一条二维平面上的曲线。在二维空间下,我们要表示密度可以使用一个三维的函数z=f(x,y),画出来是一个三维空间的曲面。而三维空间下,密度表示是一个四维的函数:q=f(x,y,z),这个密度我们在三维空间已经没有办法用线或者面去表示,只能用体积元的颜色来表示。但是我们可以把这个密度投影到一个三维的等高曲面上,这个曲面就称为等高面。本文介绍了一个python中性能比较好的画等高面的工具:Plotly。 阅读全文
posted @ 2024-05-21 15:22 DECHIN 阅读(905) 评论(0) 推荐(0)
摘要:手搓自动微分不同于符号微分、手动微分和差分法,自动微分方法有着使用简单、计算精度较高、性能较好等优势,因此在各大深度学习框架中得到了广泛的应用。虽然每个框架所使用的自动微分的原理不尽相同,但大致都是基于链式法则计算结合图计算的一些优化。如果是自己动手来手搓一个自动微分框架的话,大致就只能实现一下一阶的链式法则的自动微分。 阅读全文
posted @ 2024-04-18 15:59 DECHIN 阅读(321) 评论(0) 推荐(0)
摘要:Tkinter常用功能示例(一)本文主要介绍一些Python的Tkinter GUI框架的常用功能模块,包含基本窗口的创建、菜单栏、文本框、TreeView、按钮、滚动条、标签的设定等,另外包含了一些面向对象的GUI的简单示例。总的来说,Tkinter加上第三方的ttk,基本的GUI功能是都具备的,可以用来实现一些简单的小项目。对于大的项目来说,用PyQT/QT可能会是一个更加专业的选择。 阅读全文
posted @ 2024-04-16 11:27 DECHIN 阅读(3333) 评论(0) 推荐(1)
摘要:单精度浮点数计算误差与消减方法在使用浮点数计算时,尤其是在使用AI框架的过程中,我们往往使用的是float32单精度浮点数,这也跟GPU的硬件架构有关系。但是使用单精度浮点数的过程中,务必要考虑到累加误差和大数吃小数的问题,这两个问题在长时间的迭代过程中,有可能会直接导致计算结果就是错误的。而如果在计算的过程中使用Kahan求和公式,则可以避免这种大数吃小数的问题。Kahan求和公式的本质,就是把大数和小数分开进行计算,这样可以一定程度上达到接近于float64双精度浮点数的运算精度。 阅读全文
posted @ 2024-04-10 16:54 DECHIN 阅读(854) 评论(2) 推荐(2)
摘要:IPython刷新函数模块在IPython中或者Jupyter Notebook中,一个函数被加载以后,如果这个函数或者模块的主体被修改了,那么就算是在IPython中重新Import一次,在程序执行中也只是去加载内存中的模块,而不是我们修改之后的内容。而IPython支持了一些魔术命令配置,其中autoreload这个魔术命令可以允许我们去配置是否需要重载函数模块。其中不仅包含通用性的全局配置,还支持指向性的配置方法。 阅读全文
posted @ 2024-03-25 09:47 DECHIN 阅读(210) 评论(0) 推荐(0)
摘要:Python定位函数定义地址Python众多的第三方库,为我们的日常代码开发带来了极大的便利性,同时在开发过程中也需要注意这样的一个问题:开发的代码中有些命名可能跟第三方库冲突,例如本文介绍的基于MindSpore框架开发的过程中,定义一个本地的Cell类之后,发现本地的函数get_parameters跟Cell类本身的get_parameters冲突,因此可以使用Python的内置函数__code__对冲突函数的地址进行定位,然后进行修改。 阅读全文
posted @ 2024-03-11 15:51 DECHIN 阅读(178) 评论(0) 推荐(0)
摘要:Python3中的“指针”假如你在Python中初始化了一个变量a的值,然后用a来初始化另一个变量b,此时你希望得到的b的数值是跟a同步变化的,还是独立变化的呢?Python这个编程语言虽然没有指针类型,但是Python中的可变参量也可以像指针一样,改变一个数值之后,所有指向该数值的可变参量都会随之而改变。就比如说改变a的值,会同步的去改变b的值。那么我们应该对这种类型的赋值有所了解,才能够避免在实际的编程中犯错。 阅读全文
posted @ 2024-02-27 11:01 DECHIN 阅读(1140) 评论(0) 推荐(0)
摘要:Python报错symbol lookup error: xxx.so: undefined symbol: cufftxxx解决办法解决了Python调用CUDA算子的so动态链接库中,无法找到cufft的cufftExecR2C函数的问题。 阅读全文
posted @ 2024-02-26 16:34 DECHIN 阅读(291) 评论(0) 推荐(0)
摘要:Python设置进程名称更好的管理系统进程,是每一个程序员的进阶必经之路。尤其是使用多进程、多用户的场景,系统内的进程是非常混乱的。如果在运行程序时都能控制好进程名称,那么就可以直接通过进程名称来监管和控制进程的执行和输出。本文介绍了setproctitle这样一个工具的简单使用,可以在python代码内部对进程进行管理。 阅读全文
posted @ 2024-01-02 11:36 DECHIN 阅读(1270) 评论(1) 推荐(2)
摘要:Python代码中的偏函数本文介绍了在Python中使用偏函数partial的方法,并且介绍了两个使用partial函数的案例,分别是concurrent并行场景和基于jax的自动微分场景。在这些相关的场景下,我们用partial函数更多时候可以使得代码的可读性更好,在性能上其实并没有什么提升。如果不想使用partial函数,类似的功能也可以使用参考链接中所介绍的方法,实现一个装饰器,也可以做到一样的功能。 阅读全文
posted @ 2023-12-21 17:49 DECHIN 阅读(449) 评论(0) 推荐(1)
摘要:Python追踪内存占用本文介绍了一个工具tracemalloc,可以在Python代码的执行过程中对每一步的内存占用进行记录。 阅读全文
posted @ 2023-12-20 16:19 DECHIN 阅读(1525) 评论(0) 推荐(0)
摘要:Python定位错误:段错误 (核心已转储)解决Python编程中可能出现的“段错误(核心已转储)”,并没有其他任何提示信息的问题。 阅读全文
posted @ 2023-12-18 10:46 DECHIN 阅读(1421) 评论(0) 推荐(0)
摘要:Jupyter Notebook报错'500 : Internal Server Error'的解决方法解决使用Jupyter Notebook打开ipynb文件时报错'500 : Internal Server Error'的问题,亲测可用。 阅读全文
posted @ 2023-11-21 14:46 DECHIN 阅读(1332) 评论(0) 推荐(0)
摘要:在Python中使用LooseVersion进行软件版本号比对在软件版本快速迭代的过程中,经常会遇到一些接口变化问题。而如果需要兼容旧版本的话,就需要使用到版本判断的方法。判断清楚版本号属于哪一个区间,再对不同的版本号区间采取不同的算法或者执行策略。Python中预先内置的LooseVersion就是一个很好的版本号比对工具,不仅仅可以对相同位数或者相同类型的版本号进行比对,还可以进行错位的版本号比对。当然,需要注意的是,LooseVersion中对于输入的版本号类型还是有要求的,比如版本号中的每一位的开头必须是一个数字,版本号的每一位都不能以字母开头,否则无法进行比对。 阅读全文
posted @ 2023-08-10 16:36 DECHIN 阅读(1142) 评论(0) 推荐(0)
摘要:Python3程序捕获Ctrl+C终止信号当我们准备去杀死一个进程时,从程序设计的本身来考虑,我们应当要设计一定的保护方案来确保程序被非正常终止时,相应的计算结果也能够被很好的保存下来。在Python中可以使用signal.signal函数来实现这样的功能,但是如果要实现数据的保存功能,需要结合一个实际的类来实现。 阅读全文
posted @ 2023-03-13 14:06 DECHIN 阅读(1900) 评论(0) 推荐(2)