手机版
你好,游客 登录 注册
背景:
阅读新闻

Python之多进程multiprocessing

[日期:2014-07-08] 来源:Linux社区  作者:forlinux [字体: ]

一:multiprocess基本使用

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

Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python脚本获取Linux系统信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

Ubuntu下用Python搭建桌面算法交易研究环境 http://www.linuxidc.com/Linux/2013-11/92534.htm

#!/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()

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2014-07/104158p2.htm 

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款