原文:http://www.blogchina.com/20081009613591.html
Python2.6正好在10.1发布,我还没有仔细看完就迫不及待地写这个介绍给大家,有太多令人激动的新改进。2.6是向 Python3.0(Python3000)过渡的版本,Python3000是一个新的台阶,不跟python2.x序列兼容。我仔细地看了一下新增加 的处理多进程的包组Multiprocessing( PEP 371),这是python为利用渐成主流的M 3系统平台提供的服务而精心打造的武器。官方文档说是“Process-based ‘Threading’interface”:(注:M 3平台是我的独出心裁,就是指多核、多处理器和多计算机系统Multicore、Multi CPU、Multi computers,我叫他M 3系统编程,把本地的多核心多处理器与远程多计算机放在同一个框架下面来考虑有许多优势,例如multiprocessing.Manager就是这样做的).
Python处理并行计算的两个主要工具是Threading和Multiprocessing,像上面的文档说得multiprocessing使用类 似Threading的API来创建和管理进程(不是线程!)。令人振奋的是multiprocessing提供本地和远程的同步处理方法,能让程序员充 分利用M 3提供的强大计算能力,而不是让它们停留在广告效应上,不再是“银样蜡枪头,中看不中用”了。多线程技术是我们比较熟悉的,但是多线程不能利用多核心和多处理器的运算能力。在分布式并行处理方面,python是捷足先登引领潮流了。这绝不是偶然的, Guido van Rossum在操作系统导师 Andrew S Tanenbaum主 持的最早分布式操作系统Amoeba工作的时候,为它开发系统管理程序设计开发的,所以python具有优良的血统,是专门为分布式系统开发的工具,我个 人感觉在分布式并行处理方面python要领先于java,更不用说是C#了。当然,偏好有的时候就是偏见!Python2.6也就是 Python3000,有效地解决了(side-stepping)“全局锁GIL”的问题,我们来看 wikipedia上的说法:
现在把分布式并行系统编程的界面和系统调用封装在一起了,简单介绍如下:
Python2.6正好在10.1发布,我还没有仔细看完就迫不及待地写这个介绍给大家,有太多令人激动的新改进。2.6是向 Python3.0(Python3000)过渡的版本,Python3000是一个新的台阶,不跟python2.x序列兼容。我仔细地看了一下新增加 的处理多进程的包组Multiprocessing( PEP 371),这是python为利用渐成主流的M 3系统平台提供的服务而精心打造的武器。官方文档说是“Process-based ‘Threading’interface”:(注:M 3平台是我的独出心裁,就是指多核、多处理器和多计算机系统Multicore、Multi CPU、Multi computers,我叫他M 3系统编程,把本地的多核心多处理器与远程多计算机放在同一个框架下面来考虑有许多优势,例如multiprocessing.Manager就是这样做的).
Python处理并行计算的两个主要工具是Threading和Multiprocessing,像上面的文档说得multiprocessing使用类 似Threading的API来创建和管理进程(不是线程!)。令人振奋的是multiprocessing提供本地和远程的同步处理方法,能让程序员充 分利用M 3提供的强大计算能力,而不是让它们停留在广告效应上,不再是“银样蜡枪头,中看不中用”了。多线程技术是我们比较熟悉的,但是多线程不能利用多核心和多处理器的运算能力。在分布式并行处理方面,python是捷足先登引领潮流了。这绝不是偶然的, Guido van Rossum在操作系统导师 Andrew S Tanenbaum主 持的最早分布式操作系统Amoeba工作的时候,为它开发系统管理程序设计开发的,所以python具有优良的血统,是专门为分布式系统开发的工具,我个 人感觉在分布式并行处理方面python要领先于java,更不用说是C#了。当然,偏好有的时候就是偏见!Python2.6也就是 Python3000,有效地解决了(side-stepping)“全局锁GIL”的问题,我们来看 wikipedia上的说法:
现在把分布式并行系统编程的界面和系统调用封装在一起了,简单介绍如下:
- multiprocessing.Process创建新的进程,参数target=f,就把一个名字f的子进程创建出来了;
- multiprocessing.Queue
- multiprocessing.Pipe
- multiprocessing.Pool用来管理创建的多个子进程让它们协调工作
- multiprocessing.Manager管理在远程服务器上创建的子进程,封装了Lock和RLock锁和信号Semophore,这样不必单独处理并行问题了。