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

浙公网安备 33010602011771号