• python 多进程操作


    由于python 多线程是无法在多核上发挥优势的,所以才用多进程的方式来折中将这个问题解决。

     1 from  multiprocessing import Pool
     2 import os
     3 def f(x):
     4     #打印变量和每个进程的pid这样在显示结果中可以看出是多进程
     5     print x,os.getpid()
     6     return x*x
     7 if __name__ == '__main__':
     8     #用pool 方法来生成一个进程池,每次可以执行5个进程
     9     p=Pool(5)
    10     #这个map函数是 multiprocessing 包装后的并不是自带的map函数
    11     print  p.map(f,range(5))
    View Code

    显示结果: 如果在windows下运行可能是取pid的方法不行显示pid都是一个,下面是linux测试执行的

    0 1191
    1 1194
    4 1197
    2 1195
    3 1196
    [0, 1, 4, 9, 16]

    并行执行

    看看下面这个利用Process方式完成多进程创建

    #_*_coding:utf-8_*_
    from  multiprocessing import Process
    import os,time
    def info(title):
        print title
        print 'module name:',__name__
        if hasattr(os,'getppid'):
            #打印主父进程pid
            print 'parent process:',os.getppid()
        #打印当前进程的pid
        print 'process id:',os.getpid()
    
    def f(name):
        info("subpro")
        time.sleep(1)
        print 'subprocess:',name
    if __name__ == '__main__':
        info('main process')
        print '-------------------'
        for i in range(2):
           p=Process(target=f,args=(i,))
           #fork进程,创建
           p.start()       p.join()#这样写主要是测试,这样就把进程阻塞主了。真正处理的时候必须写在for外面要不执行方式还是串行
           print 11111111
        #p.join()

    执行结果:

  • 相关阅读:
    K&R C C90,C99的改进
    Windows 用来定位 DLL 的搜索路径
    常量字符串的问题
    C++0x中一些有用的新特性
    mainfest机制
    mainfest机制
    C++0x中一些有用的新特性
    c语言目标程序中的段
    c语言目标程序中的段
    数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
  • 原文地址:https://www.cnblogs.com/menkeyi/p/5806945.html
Copyright © 2020-2023  润新知