先在同一个文件夹下创建两个.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.

python的subprocess基本的更多相关文章

  1. Python基础篇【第6篇】: Python模块subprocess

    subprocess Python中可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen*          --废弃 popen2.*         ...

  2. 【Python】 Subprocess module

    1. subprocess.check_output() 2.subprocess.call() 3. subprocess.check_call() the methods 1.2.3 are ar ...

  3. Python模块subprocess小记

    转自:http://www.oschina.net/question/234345_52660 熟悉了Qt的QProcess以后,再回头来看python的subprocess总算不觉得像以前那么恐怖了 ...

  4. python之subprocess模块详解--小白博客

    subprocess模块 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/output/error 管道,并获取它们的返回(状态)码.这个模 ...

  5. Python模块subprocess

    subprocess的常用用法 """ Description: Author:Nod Date: Record: #-------------------------- ...

  6. Python中subprocess 模块 创建并运行一个进程

     python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex ...

  7. Python之Subprocess模块

    PS:打开文件时候加b参数是代表以二进制方式打开,在Linux加不加都可以,在windows上面最好加b参数否则可能会出现问题 使用system返回执行结果不赋值,使用popen返回了结果赋值给cmd ...

  8. Python的subprocess模块(一)

    原文连接:http://www.cnblogs.com/wang-yc/p/5624880.html 一.简介 subprocess最早在2.4版本引入.用来生成子进程,并可以通过管道连接他们的输入/ ...

  9. python之subprocess

    官网介绍:https://docs.python.org/3/library/subprocess.html Popen(): [root@oracle scripts]# cat sub_popen ...

  10. 【转】Python模块subprocess

    subprocess 早期的Python版本中,我们主要是通过os.system().os.popen().read()等函数.commands模块来执行命令行指令的,从Python 2.4开始官方文 ...

随机推荐

  1. December 06th 2016 Week 50th Tuesday

    Behind every beautiful thing, there is some kind of pain. 美丽背后,必有努力. No pains, no gains. But it seem ...

  2. 【转】iphone 输入/输出流异步读写数据

    原文:iphone 输入/输出流异步读写数据 分类: iphone2012-05-30 14:50 2484人阅读 评论(1) 收藏 举报 iphoneattributesinterfacepaths ...

  3. 英语的各种 n. adj. vt. vi. 等词性解释

    n. 名词 v. 动词(既可作及物动词,也可作不及物动词的就用这个表示) pron. 代词 adj. 形容词(后接名词) adv. 副词(修饰动词.形容词或其他副词) abbr. (这是一个缩写符号) ...

  4. vue项目搭建笔记

    安装nodejs后, 首先安装淘宝镜像:npm install -g cnpm --registry=https://registry.npm.taobao.org 淘宝镜像安装成功后,安装vue脚手 ...

  5. 「bzoj 4184: shallot」

    权限题 线段树分治加线性基 首先这个题要求删除线性基肯定是没法处理的 于是我们套上一个线段树分治 线段树分治就是一种能够避免删除的神仙操作 我们发现询问是对一个时间的单点询问,而每一个数存在的时间却是 ...

  6. [19/04/29-星期一] GOF23_行为型模式(责任链模式、迭代器模式)

    一.行为模式 二.责任链模式(chainOfResponsibility) [一个请求类] /*** 请假类 * 封装请假的基本信息 */ package cn.sxt.chainOfResponsi ...

  7. 【jQuery】todolist

    1 2 3 用npm命令下载依赖,优点:不用去网上找链接,代码都一样 4.jQuery自动下载进node_modules文件下 npm install jquery --save  这句命令的意思是保 ...

  8. PHP面试系列 之Linux(六)---- 面试题整理

    1.shell命令 top:查看有哪些系统进程正在运行.该命令提供了实时对系统处理器状态的监控,它能够实时显示系统中各个进程的资源占用情况.该命令可以按照对CPU.内存使用和执行时间对系统任务进程进行 ...

  9. Eclipse设置working set管理项目

    由于项目太多,看起来复杂,不容易找到,所以想要按文件夹区分,所以用到workingset. working set是把你这个存储空间的项目在eclipse中进行分类,只是在视图基础上分类,项目还是只有 ...

  10. 使用XWAF框架(3)——下载文件

    XWAF提供了HttpFileDownloader类用于简化用户下载文件的编码.该类提供了重载方法“downloadFile(String filePath, String fName)”实现下载.程 ...