最近两天过了一遍JS高程的前7章,第一次了解ECMAScript中基于原型(prototype-based)的面向对象的实现。思想看起来是那么的顺理成章并不难理解,但是由于属于新事物,所以打算对ECMAScript的OOP进行一下简单的小结,方便以后回来温习。
属性类型
ECMAScript对象中有两种属性:
- 数据属性
- 访问器属性
属性特征值(characteristic)
ECMAScript对象创建时都带有一些特征值,JS通过这些特征值来定义对象属性的行为。
最近两天过了一遍JS高程的前7章,第一次了解ECMAScript中基于原型(prototype-based)的面向对象的实现。思想看起来是那么的顺理成章并不难理解,但是由于属于新事物,所以打算对ECMAScript的OOP进行一下简单的小结,方便以后回来温习。
ECMAScript对象中有两种属性:
ECMAScript对象创建时都带有一些特征值,JS通过这些特征值来定义对象属性的行为。
并行计算是使用并行计算机来减少单个计算问题所需要的时间,我们可以通过利用编程语言显式的说明计算中的不同部分如何再不同的处理器上同时执行来设计我们的并行程序,最终达到大幅度提升程序效率的目的。
众所周知,Python中的GIL限制了Python多线程并行对多核CPU的利用,但是我们仍然可以通过各种其他的方式来让Python真正利用多核资源, 例如通过C/C++扩展来实现多线程/多进程, 以及直接利用Python的多进程模块multiprocessing来进行多进程编程。
本文主要尝试仅仅通过python内置的multiprocessing模块对自己的动力学计算程序来进行优化和效率提升,其中:
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. – Donald Knuth
先扔上一句名言来镇楼。
当我们的确是有需要开始真正优化我们的Python程序的时候,我们要做的第一步并不是盲目的去做优化,而是对我们现有的程序进行分析,发现程序的性能瓶颈进而进行针对性的优化。这样才会使我们花时间和精力去做的优化获得最大的效果。
本文主要介绍Python内置的性能分析器的优雅使用方法,并以作者的一个化学动力学的程序为例子进行性能分析实践, 介绍了常用的性能分析可视化工具的使用,最后对Python程序进行初步的性能优化尝试。
最近使用描述符对自己的催化动力学模拟程序进行了改进,在Python描述符的帮助下实现了更加灵活而且强大有效的属性管理,使得程序各个组件的数据封装更加完善管理也更加有条理。
本文就以自己程序中运用描述符来进行有效的python属性管理为例子,介绍python中描述符的概念以及如何更好的使用描述符这个强有力的工具帮助我们有效管理python程序中的数据访问控制。
这两天打算对自己新增的KMC部分进行并行化,其中涉及到对包含有boolean值的vector进行分散和归约操作,但是在使用MPI接口进行编写的时候发现了个问题,当我对std::vector<bool>
中的元素进行取址的时候编译器傲娇了。
我本意是想把多个进程的bool向量进行逻辑或归约然后分散到所有进程中,这就需要取不同进程中bool序列的地址,大致的代码简化如下:
本文为作者对其开源项目VASPy的说明文章。VASPy是一个纯Python编写的处理VASP文件数据以及进行数据快速可视化的库,基于OOP的思想提供了操作VASP文件的友好的接口,可以帮助使用者快速编写处理VASP相关文件的脚本,以提升效率。VASPy的项目仍处于起步阶段,希望大家可以都贡献出自己的力量使其壮大起来。
对于广大做计算化学或者材料模拟的同学肯定听说过VASP的大名或者其科学研究与其息息相关。
VASP的全称是Vienna Ab-initio Simulation Package,是维也纳大学Hafner课题组开发的进行电子结构计算和量子力学-分子动力学模拟的软件包,目前是材料模拟和计算物质科学研究中最流行的商业软件之一。关于VASP的详细介绍可以参见其官方主页(http://www.vasp.at/)