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

Python脚本执行shell一个小问题

01 常用commands模块 就是写python时候,如果执行了一个命令,我们想知道返回,一般是可以通过commands这个模块来处理,我比较习惯使用是commands.getstatusoutput...我们脚本执行开始时间start_time和脚本最后输出时间end_time中间,有10s时间差。...这个Popen类中还有其他很有用函数,这里简要介绍,有需求可以去研究下: Popen.poll() 用于检查进程(命令)是否已经执行结束,没结束返回None,结束后返回状态码。...Popen.wait(timeout=None) 等待进程结束,并返回状态码;如果在timeout指定秒数之后进程还没有结束,将会抛出一个TimeoutExpired异常。...Popen.send_signal(signal) 发送指定信号给这个子进程Popen.terminate() 停止该进程Popen.kill() 杀死该进程

1.9K10
您找到你想要的搜索结果了吗?
是的
没有找到

Python 执行系统命令

system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个进程在系统上执行命令行,进程执行结果无法影响主进程。...Popen方法: 1、Popen.poll():用于检查进程是否已经结束。设置并返回returncode属性。 2、Popen.wait():等待进程结束。设置并返回returncode属性。...在windows平台下,该方法将调用Windows API TerminateProcess()来结束进程。 6、Popen.kill():杀死进程。...10、Popen.pid:获取进程进程ID。 11、Popen.returncode:获取进程返回值。如果进程还没有结束,返回None。...12、subprocess.call(*popenargs, **kwargs):运行命令。该函数将一直等待到进程运行结束,并返回进程returncode。文章一开始例子就演示了call函数。

1.6K10

7-并发编程

,不再加入进程 p.close() # 防止主进程结束进程无法继续运行 p.join() 输出: 进程2624 打印 0 进程2625 打印 1 进程2626 打印 3 进程...进程可以实现并行运行代码,但是一旦进程太多,CPU运行不过来也是需要进行等待,用了多进程以后,就可以不使用队列了,也可以实现多线程效果 除此之外,还可以多进程和多线程结合起来使用,一个简单例子 from...进程线程切换都需要使用一定时间。...进程python中,如果要运行系统命令,会使用 subprocess 来运行,官方建议使用run 方法来运行系统命令,更高级用法是直接使用其 Popen 接口。...) 其次,通过Popen.communicate() ,进程可以在启动了以后,还可以进行参数输入 import subprocess print('$ nslookup') p = subprocess.Popen

32010

Python用subprocessPopen来调用系统命令

subprocess.STDOUT 创建Popen对象时,用于初始化stderr參数,表示将错误通过标准输出流输出。 Popen方法: Popen.poll() 用于检查进程是否已经结束。...Popen.wait() 等待进程结束。设置并返回returncode属性。 Popen.communicate(input=None) 与进程进行交互。...在windows平台下,该方法将调用Windows API TerminateProcess()来结束进程Popen.kill() 杀死进程。...Popen.pid 获取进程进程ID。 Popen.returncode 获取进程返回值。假设进程还没有结束,返回None。...该函数将一直等待到进程执行结束,并返回进程returncode。文章一開始样例就演示了call函数。假设进程不须要进行交 互,就能够使用该函数来创建。

1.7K20

python多线程与多进程及其区别

如我们可以在python程序中打开记事本,打开cmd,或者在某个时间点关机: >>> import subprocess >>> subprocess.Popen(['cmd']) <subprocess.Popen...,那么运行时间和主线程基本一致。...但是对于python线程,双线程并行执行耗时比单线程要高多,效率相差近10倍。...对于CPU密集型线程,其效率不仅仅不高,反而有可能比较低。python多线程比较适用于IO密集型程序。对于的确需要并行运行程序,可以考虑多进程。...; 如果CPU和系统支持多线程与多进程,多个进程并行执行同时,每个进程线程也可以并行执行,这样才能最大限度榨取硬件性能; 线程和进程上下文切换 进程切换过程切换牵涉到非常多东西,寄存器内容保存到任务状态段

43310

如何计算Python程序运行时间?@RunTime装饰器,一行代码搞定

今天给大家分享一下:如何在不改变原来代码前提下,计算Python程序运行时间? 首先我们写一个计算过程:从1加到1亿,然后再用一行代码计算它运行时间。...1、从1加到100000000 我们先来看一个例子:累加,求从1加到100000000结果。看过前面基础课程同学,都能轻松写出来。...if __name__ == '__main__': start = 1 end = 1 * 10000 * 10000 add_sum(start, end) 2、运行时间...导入第三方库:potime pip install potime 在Python程序def上面,添加装饰器**@RunTime** # pip install potime ,下载这个库 from...): # 算术逻辑 if __name__ == '__main__': add_sum(start, end) 输出结果中,就会自动包含运行时间了。

1K20

【愚公系列】2021年12月 Python教学课程 26-系统编程

那么我们如何通过 Python 来完成这些命令行指令执行呢?...首先,我们应该知道是命令行指令执行通常有两个我们比较关注结果: 命令执行状态码–表示命令执行是否成功 命令执行输出结果–命令执行成功后输出 早期 Python 版本中,我们主要是通过 os.system...os.popen(command, [mode, [bufsize]]) 开启一个进程执行 command 参数指定命令,在父进程进程之间建立一个管道 pipe,用于在父子进程间通信。...如果命令执行时间超时,进程将被杀死,并弹出TimeoutExpired 异常。...CompletedProcess 类有下面这些属性: args 启动进程参数,通常是个列表或字符串。 returncode 进程结束状态返回码。0 表示成功状态。

86020

进程和线程(上)

最近会开始继续 Python 进阶系列文章,这是该系列第一篇文章,介绍进程和线程知识,刚好上一篇文章就介绍了采用 concurrent.futures 模块实现多进程和多线程操作,本文则介绍下进程和线程概念...,多个线程共享了CPU执行时间。...randint 函数来随机输出当前下载文件耗时,从结果看,程序运行时间等于两个下载文件任务时间总和。...运行结果如下所示,耗时就不是两个任务执行时间总和,速度上也是大大提升了。 开始下载Python.pdf... 开始下载nazha.mkv... Python.pdf下载完成!...然后 join() 就是等待所有进程执行完任务。 运行结果如下所示: Waiting for all subprocesses done... 开始下载Python.pdf...

61010

Python subprocess与命令行交互

Python subprocess 模块是一个功能强大库,用于启动和与流程交互。 它附带了一些高级 api,比如调用、检查输出和运行,这些都集中在程序运行和等待完成进程上。...可以用 run 来完成调用进程方式,但是对于 底层进程创建与管理, Popen提供了很大灵活性,以及处理未被常见函数覆盖场景。...最新源代码: https://github.com/python/cpython/tree/3.8/Lib/subprocess.py 下面谈论不直接涉及一个长时间运行进程。...将它作为一个进程启动,然后将客户机连接到它,并运行一些测试序列。 当完成后,希望以一种有序方式关闭子程序。 这对于同步运行进程 api 来说是很难实现,因此必须查看一些底层级别的 api。...使用底层 Popen API 异步启动进程(意味着 Popen 立即返回,进程在后台运行)。

7.3K22

python实现局域网ip地址扫描

python 遍历局域网ip 从知道python开始,我视线里就没缺少过他。尤其是现如今开发语言大有傻瓜化趋势。而作为这一趋势领导,脚本语言就显得格外亮眼。...Popen方法: Popen.poll()   用于检查进程是否已经结束。设置并返回returncode属性。 Popen.wait()   等待进程结束。...Popen.communicate(input=None)   与进程进行交互。向stdin发送数据,或从stdout和stderr中读取数据。可选参数input指定发送到进程参数。...在windows平台下,该方法将调用Windows API TerminateProcess()来结束进程Popen.kill()   杀死进程。...Popen.pid   获取进程进程ID。 Popen.returncode   获取进程返回值。如果进程还没有结束,返回None。

3K10

解决subprocess.CalledProcessError: Command ‘‘

它提供了一个简便方式来调用外部程序并与其进行交互。 进程在操作系统中是独立运行进程,它可以执行不同命令、程序或脚本。...进程模块可以帮助我们在Python程序中启动、控制和与进程进行数据交换。 subprocess模块中最常用函数是run()、call()和Popen()。...Popen(): 这是一个更底层、更灵活函数,用于创建一个进程,并返回一个Popen对象,可以通过该对象控制和管理进程。...Popen类还提供了许多其他方法和属性,例如kill()用于终止进程,poll()用于检查进程是否结束等。...subprocess模块也提供了一些其他函数和常量,用于设置和处理进程其他参数和属性,例如设置执行路径、设置环境变量、设置超时时间等。

58960

正确使用python调用shell姿势

输出123 我们可以看到popen方法可以获取命令执行后到输入结果,但这还是有缺陷,我们知道在linux里面,有标准0,1,2来代表标准输入,输出和错误,现在只有stdout没有其他两个变量还是有限制...Popen 是 subprocess核心,进程创建和管理都靠它处理。...stdin, stdout, stderr:分别表示程序标准输入、输出、错误句柄 preexecfn:只在 Unix 平台下有效,用于指定一个可执行对象(callable object),它将在进程运行之前被调用...cwd:用于设置进程的当前目录。env:用于指定子进程环境变量。如果 env = None,进程环境变量将从父进程中继承。...,这个函数会等整个shell执行结束后,输出结果: out, err, code= normal_run_command("sh xs.sh")print out 至此,我们已经介绍完了如何使用python

7.5K20

python模块--subprocess

代码中去执行一些系统命令,在执行python程序时,该模块会创建出一个进程,来运行外部程序。     ...丢失), 往返行程估计时间(以毫秒为单位):     最短 = 0ms,最长 = 0ms,平均 = 0ms subprocess.Popen()     上面几个函数都是Popen()封装,主进程都会等待进程执行完毕...,Popen()创建进程不会被等待,相当于异步执行。    ... at 0x02230810> 0.06108553745727746 #从时间上看,主程序很快就结束Popen()创建对象方法包括: POPEN1.poll() # 检查进程状态 POPEN1....kill() # 终止进程 POPEN1.terminate() # 终止进程 POPEN1.send_signal() # 向进程发送信号 pid属性包含了进程pid号     2.subprocess.Popen

64910

python 性能提升之 并行map

前段时间进行单一目录下10万张图片发送,效果很差,数据积压原来越多。 性能问题提上议程。 采用多线程 多进程 感觉比较繁琐,网上有介绍 map并行处理,使用后性能提高明细。...网上介绍map如下 介绍:Map Map是一个很棒小功能,同时它也是Python并行代码快速运行关键。给不熟悉的人讲解一下吧,map是从函数语言Lisp来。map函数能够按序映射出另一个函数。...有两个能够支持通过map函数来完成并行库:一个是multiprocessing,另一个是鲜为人知但功能强大文件:multiprocessing.dummy。 题外话:这个是什么?...你从来没听说过dummy多进程库?我也是最近才知道。它在多进程说明文档里面仅仅只被提到了一句。而且那一句就是大概让你知道有这么个东西存在。我敢说,这样几近抛售做法造成后果是不堪设想!...Dummy就是多进程模块克隆文件。唯一不同是,多进程模块使用进程,而dummy则使用线程(当然,它有所有Python常见限制)。也就是说,数据由一个传递给另一个。

2.2K20
领券