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

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

显示结果: 如果在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()

执行结果:

最新文章

  1. 产品经理 - 移动支付+Pos收单分析
  2. 想要学好JQuery看这里
  3. Linux下安装gcc和g++
  4. 理解AOP
  5. 跟踪js文件作为iframe页面不起作用时(淘宝天猫)
  6. 函数参数为int*和int&的区别
  7. JMeter使用技巧
  8. ASP.NET WebForm中前台代码如何绑定后台变量
  9. 3 D. Least Cost Bracket Sequence
  10. Eclipse设置合适的字体
  11. Linux Mysql 权限相关信息 来源于网络
  12. noip2008(最优贸易)
  13. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing
  14. 在Windows上安装「算法 第四版」组件
  15. Spring_boot入门(1)
  16. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(理解)
  17. nova系列一:虚拟化介绍
  18. 2017CCPC秦皇岛 A题Balloon Robot&&ZOJ3981【模拟】
  19. html提交表单到Servlet
  20. i++与++i区别

热门文章

  1. java绝对路径和相对路径的理解
  2. MongoDB - MongoDB CRUD Operations, Update Documents
  3. 【POJ】2142 The Balance 数论(扩展欧几里得算法)
  4. js父页面和子页面相互取值
  5. Spring boot中使用log4j记录日志
  6. python3爬虫.4.下载煎蛋网妹子图
  7. 模型稳定度指标PSI与IV
  8. Mysql储存过程4:mysql变量设置
  9. IT人员必备linux安全运维之Ssh用途、安全性、身份认证以及配置……【转】
  10. 微信开发,调用js-SDK接口