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()

 

执行结果:

 

转载于:https://www.cnblogs.com/menkeyi/p/5806945.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值