先在同一个文件夹下创建两个.py文件。

第一个:13.py

# -*- coding: utf-8 -*-
__author__ = "YuDian"
'''
multiprocessing->Pool进程池。
file name:13.py
'''
from multiprocessing import Pool
import os, time, random def long_time_task(name):
print('Run task %s (%s)...' % (name, os.getpid()))
start = time.time()
time.sleep(random.random() * 3)
end = time.time()
print('Task %s runs %0.2f seconds.' % (name, (end - start))) if __name__ == '__main__':
print('Parent process %s.' % os.getpid())
print('父进程的父进程:(也就是打开这个文件的进程):',os.getppid())
p = Pool(9) # pool()可以指定同时运行的进程数。如果缺省,默认为该电脑的CPU核数。如果赋值超过CPU核数,按照CPU核数。
for i in range(11): # range()内的范围可以任意指定,为运行的进程总数。
p.apply_async(long_time_task, args=(i,))
print('Waiting for all subprocesses done...')
p.close()
p.join()
print('All subprocesses done.')

第二个: 14.py

 import subprocess
import os
'''
开一个子进程,并对子进程通信。参考:http://blog.csdn.net/seetheworld518/article/details/48805261
file name:14.py
''' class Shell(object):
def runCmd(self, cmd):
res = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print('本程序的进程2:',os.getpid())
print('用res.pid得到的就是这个的子进程,也就是13.py的父进程',res.pid)
sout, serr = res.communicate('13.py\n')
print('本程序的进程3:',os.getpid())
return res.returncode, sout, serr, res.pid print('本程序的进程1:',os.getpid())
shell = Shell()
result=shell.runCmd('python F:/python_codes/learn_python_of_simple_codes/demos/13.py')
print(result[1].decode('utf-8'))

最后输出为:

本程序的进程1: 13928
本程序的进程2: 13928
用res.pid得到的就是这个的子进程,也就是13.py的父进程 6908
本程序的进程3: 13928
Parent process 8720.
父进程的父进程:(也就是打开这个文件的进程): 6908
Waiting for all subprocesses done...
Run task 0 (15352)...
Run task 1 (7832)...
Run task 2 (11824)...
Run task 3 (3140)...
Run task 4 (12572)...
Run task 5 (18808)...
Run task 6 (9284)...
Run task 7 (17996)...
Run task 8 (1996)...
Task 5 runs 0.33 seconds.
Run task 9 (18808)...
Task 6 runs 0.63 seconds.
Run task 10 (9284)...
Task 7 runs 1.27 seconds.
Task 10 runs 0.90 seconds.
Task 2 runs 2.32 seconds.
Task 9 runs 2.07 seconds.
Task 0 runs 2.46 seconds.
Task 1 runs 2.47 seconds.
Task 4 runs 2.51 seconds.
Task 3 runs 2.58 seconds.
Task 8 runs 2.82 seconds.
All subprocesses done.

最新文章

  1. bug描述技巧
  2. IOS系统基础知识
  3. HTML5开发笔记:初窥CANVAS,上传canvas图片到服务器
  4. Android自动化学习笔记之MonkeyRunner:用Eclipse执行MonkeyRunner脚本
  5. CodeForces 710CMagic Odd Square(经典-奇数个奇数&偶数个偶数)
  6. select..in(参数化) 解决注入式问题
  7. C++中new和malloc的区别
  8. Swoole + zphp 改造为专门用来开发接口的框架
  9. hibernate关于一对一用法
  10. linux下的文件权限管理
  11. Nginx SPDY缓冲区溢出漏洞
  12. Java实现SSO
  13. (重)POJ 3020Antenna Placement
  14. codeforces 340C Tourist Problem(公式题)
  15. Spring整合Hibernate 一 - 注入SessionFactory
  16. maven插件的生命周期的详细说明(两)
  17. node.js爬虫杭州房产销售及数据可视化
  18. SpringCloud是否值得引入?
  19. celery(一) application
  20. root登陆欢迎界面设置

热门文章

  1. 沉淀再出发:jetty的架构和本质
  2. 读 CSI讲义 费马小定理
  3. node升级 npm的升级
  4. python 函数式编程之lambda( ), map( ), reduce( ), filter( )
  5. Chapter 1 Secondary Sorting:Introduction
  6. Angular Reactive Forms -- Model-Driven Forms响应式表单
  7. IntelliJ IDEA 与Eclipse Link with Editor等价功能设置
  8. Xpath提取一个标签里的所有文本
  9. iOS UI的几种模式
  10. 面试准备——(五)Jmeter