Python之多进程multiprocessing


一:multiprocess基本使用

multiprocessing是要比fork更高级的库了,使用multiprocessing可以更加轻松的实现多进程程序。multiprocessing也提供了很多进程同步和进程通信的方法。 

《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版]

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码]

Python脚本获取Linux系统信息

在Ubuntu下用Python搭建桌面算法交易研究环境

#!/usr/bin/env python

import multiprocessing

import time

def clock(interval):

        while True:

                print "The time is {0}".format(time.ctime())

                time.sleep(interval)

if __name__ == "__main__":

        for i in range(3):

                p = multiprocessing.Process(target=clock,args=(1,))

                p.start()

                p.join()


join()代表启动多进程,但是阻塞并发运行,一个进程执行结束后再执行第二个进程。可以给其设置一个timeout值比如join(5)代表5秒后无论当前进程是否结果都继续并发执行第二个进程。

二:进程同步

对于一些互斥的资源来说,进程间需要进程互斥来访问。否则导致资源访问受阻,或者最后的结果混乱等情况。对于标准输出这个资源来说,如果多个资源同属输出信息,可能会导致输出的信息混乱。所以需要使用锁来避免资源互斥访问。

from multiprocessing import Process,Lock

def f(l,i):

      l.acquire()

      print "hello world",i

      l.release()

 

if __name__ == "__main__":

        lock = Lock()

        for num in range(10):

                Process(target=f,args=(lock,num)).start()

更多详情见请继续阅读下一页的精彩内容:  

  • 1
  • 2
  • 下一页

相关内容