zoukankan      html  css  js  c++  java
  • 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()

    执行结果:

  • 相关阅读:
    3.python函数编程-reduce函数
    2.python函数编程-filter函数
    1.python函数式编程-map函数
    匿名函数
    函数作用域
    风湿理论
    关于ProjectServer调用PSI 报Error GeneralReadOnlyColumn (20005)
    ProjectServer任务审批后自动发布
    ProjectServer如何让系统管理员模拟普通用户创建自己的时间表
    如何对Project Proffesional设置预警灯
  • 原文地址:https://www.cnblogs.com/menkeyi/p/5806945.html
Copyright © 2011-2022 走看看