使用C语言和Python基于MPI并行计算PI的值

圆周率PI是一个很神奇的数字,自古以来,包括数学家在内的很多人都曾使用过各种各样的算法去估算PI的真实值,并且都取得了一定的成就。古巴比伦人使用3.125作为PI的近似值,约公元前1700年的古埃及人则提出PI=3.1604,中国的祖冲之(430-501)则使用355/113作为近似值,使得PI值精确到了7位数。随着计算机的问世,以及科学技术发展的需要,PI的近似值目前精确位数早已突破万亿位。PI值除了有其每一位、每两位、每三位都符合均匀分布的统计规律特性之外,还可以用来检测计算机硬件的可靠性,而且,也可以用来入门并行计算。

继续阅读“使用C语言和Python基于MPI并行计算PI的值”

python实现socket通信

python可以用来实现两个主机进程之间的TCP通信,就是通过使用socket套接字来实现的,我们可以基于此,来实现一些应用层协议,以达到不同主机之间的进程通信的目的。这一点,除了普通的网络应用程序(如聊天工具和游戏等)之外,在分布式系统中,也有着很大的用途,比如机器学习需要在多台计算机中进行并行计算的时候。

服务器/客户机模型(C/S模型)如图:

TCP服务器/客户端模型

继续阅读“python实现socket通信”

Python实现多进程运行

在这篇文章里,我将列出一种python下的实现多进程并发执行程序的方法。我们经常需要通过并发来实现一些功能,为了加速计算或者最大程度利用CPU等等。Python中有一种方法可以实现多进程并发执行,我们需要导入python库“multiprocessing”。

继续阅读“Python实现多进程运行”

Python读取wav格式文件

我们经常需要处理wav格式的文件,读取其中的声音信号和相关参数,来做一些事情。如果我们使用C++来做,那么需要对文件的底层存储格式有一个透彻的了解才行,而且考虑不周还有可能出Bug;如果使用MatLab来做,虽然只有一行代码就可以读取文件,但是MatLab语言自身的局限性使得写出的代码难以在实际中投入使用。因此,兼顾简介易用和实用性,用Python来做就显得比较好了。

继续阅读“Python读取wav格式文件”

Python缩进问题

众所周知,python是一个基于缩进而不是大括号的语言,因而写python代码有需要使用游标卡尺的梗。我在写python代码的时候,没少掉进这个坑里面。基本上只要前一行结尾出现冒号,下一行必然添加一个单位的缩进,直到块结束。我们可以使用空格(Space)和制表符(Tab)来进行缩进,然而这里面有一些会经常遇到的坑。

继续阅读“Python缩进问题”

初学Python

Python的确是一个易于学习且功能强大的编程语言,而且是跨平台做的最好的编程语言。虽然它是解释型的语言,但是其开发效率之高,有目共睹,弥补了运行速度稍慢的缺陷。Python有胶水语言之称,解释器很容易拓展,用起来像瑞士军刀。当前的很多机器学习方面的项目都是基于Python语言实现的,所以感觉这个语言未来会很火。本人推荐直接学Python3版本,这样在时代的潮流下才不容易掉队。: )

继续阅读“初学Python”