首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python标准库06 子进程 (subprocess包)

这里的内容以Linux进程基础和Linux文本流为基础。subprocess包主要功能是执行外部的命令和程序。比如说,我需要使用wget下载文件。我在Python中调用wget程序。...在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序(fork,exec见Linux进程基础)。...subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。...使用subprocess包中的函数创建子进程的时候,要注意: 1) 在创建子进程之后,父进程是否暂停,并等待子进程运行。 2) 函数返回什么 3) 当returncode不为0时,父进程如何处理。...通过使用subprocess包,我们可以运行外部程序。这极大的拓展了Python的功能。

2.8K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    subprocess:Python中创建子进程

    前言 subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准输入和输出通道来回传数据。...本篇,将详细介绍Python创建附加进行的库:subprocess。 run(运行外部命令) subprocess库本身可以替换os.system(),os.spawnv()等函数。...print(completed.returncode) 这里我们运行了一个windows系统常用的whoami命令,返回当前用户的名称,输出如下: 这里,我们使用了subprocess.run调用了子进程运行...returncode为子进程的退出状态码。通常情况下,退出状态码为0则表示进程成功运行了;一个负值-N表示这个子进程被信号N终止了。...) result = proc2.stdout for line in result: print(line.decode('utf-8').strip()) sys的命令交互 在我们学习Python

    54770

    python多进程,全局变量未更新问题

    python多进程,全局变量未更新 问题:子进程全局变量没有按照预想的更新,导致数据没有写入磁盘。...进程池必须在if __name__ == '__main__'下面使用 复现:见实验代码 环境:centos7, python3.7 原因: 子进程的__name__属性值不是'__main__' 解决办法...在这语句之后的值不会传递到子进程里。...,前者可以使用fork,而后者是python解释器新开一个进程,然后使用序列化需要用到的资源传到那个进程中,此时在子进程的那些模块下打印locals()会显示里面的__name__字段并不是__main...另外,如果想在进程间通行,请使用官方的队列方法或者管道,因为全局变量在父进程和子进程之间的值是独立的,改变其中一个不会同步到另外的进程。

    2.8K10

    python包安装及安装包制作

    虽然Python的模块可以拷贝安装,但是一般情况下推荐制作一个安装包,即写一个setup.py文件来安装。...使用者拿到这个包后,解压,到foo-1.0目录下执行:python setup.py install,那么,foo.py就会被拷贝到python类路径下,可以被导入使用(如果安装是egg文件,会把egg...安装包文件: (1).假设你要分发mypackage包,将包文件放在script目录下 那么setup.py内容如下: from distutils.core import setup #from setuptools...使用者拿到这个包后,解压,到mypackage-1.0目录下执行:python setup.py install,那么,foo.py就会被拷贝到python类路径下,可以被导入使用(如果安装是egg文件...具体细节,参考otpauth-1.0.1.tar.gz的模板 python 包安装没有这么复杂,参考 https://www.cnblogs.com/maociping/p/6633948.html

    1.9K20

    Python基础16-正则和子进程模块

    (在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。...print(re.findall("[0-9a-zA-Z]","1982asa+sa")) # ^ 匹配行首 print(re.findall("^h","hellohello")) # # $ 匹配行未...\|",src)) subprocess模块 ---- subprocess模块介绍 sub 子 process 进程 什么是进程 正在进行中的程序...每当打开一个程序就会开启一个进程 每个进程包含运行程序所需的所有资源 正常情况下 不可以跨进程访问数据 但是有些情况就需要访问别的进程数据 提供一个叫做管道的对象...subprocess的好处是可以获取指令的执行结果 subprocess执行指令时 可以在子进程中 这样避免造成主进程卡死 注意 管道的read方法和文件的read有相同的问题

    1.2K50

    Python安装PyGraphics包简

    Python还比较年轻,这几个小软件很小,但找齐不那么容易,官网上可能由于对方有部分库遗失下载不下来,各处收集,全部收齐上传在此,且在命名时已按照逐一安装的顺序编好了号,需要的下载下来按序号安装!...Python安装PyGraphics包 (python import media模块)简单教程: 如果没有安装PyGraphics包而使用了引用 >>>import media 就会产生错误:No module...(3)numpy-1.6.1-win32-superpack-python2.7(2013-3-6)     说明:直接安装没问题。...,必须下载并安装Nose包,此时不需要另外找Nose包下载了,直接利用cmd。...说明:打开cmd进入命令提示行,电脑要联网的,在命令提示行中输入 C:\Python27\Scripts\easy_install nose 回车(如果一刚开始你的Python安装路径不是这个,亲,卸了重装吧啊啊

    82610

    python包安装:高效方法

    python第三方包高效安装的方法 对,没错,就是高效方法。尝试多种方法,安装包总是出现安装好了,缺不能加载这个包,各种谷歌方法,尝试各种方法,都不尽如意,问题依然频出。...首先,你需要安装python包,接下来,我们来安装python第三方包,而常常采用的方法有如下几种: pip install scikit-learn 或 easy_install scikit-learn...详细技巧介绍 在这里 如果是windows系统,去下载exe文件 去官网或镜像下载whl文件 上面的三种方法,经过我的实验,发现使用whl文件来安装,更容易安装成功,当然推荐这种安装方式咯。...下面来介绍这种安装方法,详细如下: 去到Python安装Scripts目录下,再使用pip install xxx.whl安装 先打开cmd,切换到Python的Scripts目录下。...如果之前安装过,需要有卸载该包的动作 ? 安装whl文件 ? 我的电脑安装了,就不给详细的情况。大家按照上述的流程来做,肯定也能解决你们的问题。若是有问题,请反馈留言咯!

    89520

    python安装mysql-python依赖包

    接口自动化使用的是python的behave框架,因此需要折腾python了,而公司配的笔记本是windows的,因此要在windows下折腾python了 # 步骤 项目中使用的setup.py文件来管理依赖的...,通过ide直接安装依赖的时候提供mysql-python安装失败,如下 MySQLdb/_mysql.c(29) : fatal error C1083: Cannot open include file...安装wheel,通过pip install wheel安装即可 2. 安装whl包,这个包从https://link.jianshu.com/?...下载相应的版本,然后通过pip install 安装下载好的whl文件 3....然后再执行pip install mysql-python # 后记 是经过多次尝试后,成功了,其中也安装过vcforpython,说是因为windows缺少编译组件,如果上面步骤不成功,可以尝试安装下这个编译环境

    2.6K20

    Python标准库10 多进程初步 (multiprocessing包)

    我们已经见过了使用subprocess包来创建子进程,但这个包有两个很大的局限性:1) 我们总是让subprocess运行外部的程序,而不是运行一个Python脚本内部编写的函数。...(这样的比较实际是不公平的,因为subprocessing本身就是设计成为一个shell,而不是一个多进程管理包) threading和multiprocessing (请尽量先阅读Python多线程与同步...) multiprocessing包是Python中的多进程管理包。...与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程。该进程可以运行在Python程序内部编写的函数。...(练习: 使用mutiprocessing包将Python多线程与同步中的多线程程序更改为多进程程序) Pipe和Queue 正如我们在Linux多线程中介绍的管道PIPE和消息队列message queue

    84670

    Python标准库11 多进程探索 (multiprocessing包)

    在初步了解Python多进程之后,我们可以继续探索multiprocessing包中更加高级的工具。这些工具可以让我们更加便利地实现多进程。...进程池 进程池 (Process Pool)可以创建多个进程。这些进程就像是随时待命的士兵,准备执行任务(程序)。一个进程池中可以容纳多个待命的士兵。 ?...close()  进程池不再创建新的进程 join()   wait进程池中的全部进程。必须对Pool先调用close()方法才能join。 练习 有下面一个文件download.txt。...(你可以使用subprocess调用wget或者curl等下载工具执行具体的下载任务) 共享资源 我们在Python多进程初步已经提到,我们应该尽量避免多进程共享资源。...共享“资源” 共享内存 在Linux进程间通信中,我们已经讲述了共享内存(shared memory)的原理,这里给出用Python实现的例子: # modified from official documentation

    58950
    领券