运行时间比较

news/2024/6/16 20:09:33

subprocess.run() 函数参数的含义:

  • shell_command:这是要执行的命令。它可以是一个字符串,也可以是一个包含命令和参数的列表。例如,“ls -l” 或 [“ls”, “-l”]。
  • shell=True:这是一个布尔值参数,指示是否在 shell 中执行命令。如果设置为 True,则可以使用 shell 的功能,例如管道和重定向。如果设置为 False,则命令将直接在子进程中执行,而不经过 shell。
  • capture_output=True:这是一个布尔值参数,指示是否捕获命令的输出。如果设置为 True,则 stdout 和 stderr 将被捕获并作为返回值的一部分。如果设置为 False,则 stdout 和 stderr 将不会被捕获,返回值中的这两个属性将为 None。
  • text=True:这是一个布尔值参数,指示是否以文本模式处理输入和输出。如果设置为 True,则输入和输出将被视为文本,并使用默认的本地编码进行解码。如果设置为 False,则输入和输出将被视为字节流。

该函数将执行给定的命令,并返回一个 CompletedProcess 实例,其中包含命令的执行结果。返回的实例将具有以下属性:

  • args:执行的命令及其参数。
  • returncode:命令的返回码。
  • stdout:命令的标准输出。如果 capture_output 参数为 True,则此属性将包含输出内容;否则为 None。
  • stderr:命令的标准错误输出。如果 capture_output 参数为 True,则此属性将包含错误输出内容;否则为 None。
  • 此外,run() 函数还具有其他可选参数,例如 input、timeout 和 check,用于控制命令的输入、超时和错误检查行为。但在给定的代码中,这些参数没有被使用到。

import subprocess
import time
import os
from time import time
from timeit import Timer


def command(folder_path = "/mnt/c/Users/19831/Desktop/rhino/将图片转换为结构IGS文件的GH文件/png",file_name = "999.png"):
    shell_command = f'find "{folder_path}" -name "{file_name}" -print'
    result = subprocess.run(shell_command, shell=True, capture_output=True, text=True)
    # print(repr(result.stdout)) # '/mnt/c/Users/19831/Desktop/rhino/将图片转换为结构IGS文件的GH文件/png/999.png\n'
    # 检查返回结果
    if result.stdout.strip():
        print("文件存在")
    else:
        print("文件不存在")


def listdir(folder_path = "/mnt/c/Users/19831/Desktop/rhino/将图片转换为结构IGS文件的GH文件/png",file_name = "9999.png"):
    file = os.listdir(folder_path)
    if file_name in file:
        print("文件存在")
    else:
        print("文件不存在")        

def pathexists(folder_path = "/mnt/c/Users/19831/Desktop/rhino/将图片转换为结构IGS文件的GH文件/png",file_name = "9999.png"):
    file_path = os.path.join(folder_path, file_name)
    if os.path.exists(file_path):
        print("文件存在")
    else:
        print("文件不存在")

if __name__ == "__main__":
    start_time = time()
    command()
    end_time = time()
    execution_time = end_time - start_time
    print(f"程序执行时间: {execution_time}秒")  # 0.23725390434265137秒
    
    start_time = time()
    listdir()
    end_time = time()
    execution_time = end_time - start_time
    print(f"程序执行时间: {execution_time}秒")  # 0.1987314224243164秒

    start_time = time()
    pathexists()
    end_time = time()
    execution_time = end_time - start_time
    print(f"程序执行时间: {execution_time}秒") #  0.0017557144165039062秒   
    
    # t1 = Timer("command()", "from __main__ import command")
    # t2 = Timer("listdir()", "from __main__ import listdir")
    # print(t1.timeit(number=5))  # 1.405377944999941
    # print(t2.timeit(number=5))  # 1.2719782479999822
    

结论:

os.path.exists 时间少于 os.listdir 时间少于 命令行提交的command


http://lihuaxi.xjx100.cn/news/2162053.html

相关文章

人际关系与情景模拟

面试中的同事 1、着眼合作多理解 2、立足长远多承担 3、分工协作多沟通 4、相互学历促成长 面试中的领导 1、尊重领导权威 2、适应领导风格 3、服从领导安排 4、请示领导意见 5、完成领导任务 6、汇报工作结果 面试中的下属(面试考的很少,毕…

iPhone退出恢复模式的方法有哪些?iPhone用户必知的几种方法!

大家有没有遇到过类似的情况,苹果手机在进入恢复模式后,却发现怎么也退出不了,这是什么原因?iPhone手机恢复模式怎么退出? 无论是误按、系统故障,还是其他未知因素导致手机进入恢复模式,如何快速…

老师们怎么发布月考成绩

月考成绩的私密发布一直是老师们需要慎重对待的一项工作。要想高效、私密的将成绩反馈给学生和家长,工作量不容小觑,在以前没有那么多教学工具的时代,老师们基本都是手工记录成绩,然后在班级会议上逐一宣读,或者通过邮…

go routing 之 gorilla/mux

1. 背景 继续学习 go 2. 关于 routing 的学习 上一篇 go 用的库是:net/http ,这次我们使用官方的库 github.com/gorilla/mux 来实现 routing。 3. demo示例 package mainimport ("fmt""net/http""github.com/gorilla/mux&…

来盘点我的校园生活(3)

来公布上期数学题答案:12 你算对了吗? 今天我们班真是炸开了锅。事情是这样的,我今天早晨上学,学校不让早到,但我一个不小心早到了,主任的规定是尽量不早到,早到不扣分,倒要站在那儿背书&…

使用Python生成一束玫瑰花

520到了,没时间买花?我们来生成一个电子的。 Python不仅是一种强大的编程语言,用于开发应用程序和分析数据,它也可以用来创造美丽的艺术作品。在这篇博客中,我们将探索如何使用Python生成一束玫瑰花的图像。 准备工作…

面向对象-----继承

前面向大家介绍了面向对象中的封装性,今天再来向大家介绍面向对象的继承和多态的两大特性。 1.继承 1.1 为什么需要继承? 在java语言中,我们用类来描述世间万物,虽然万物非常复杂,但总有一些共同点,如果…

软件设计师备考笔记(九):数据库技术基础

文章目录 一、基本概念二、数据模型(一)基本概念(二)E-R模型(三)数据模型 三、关系代数(一)关系数据库的基本概念(二)五种基本的关系代数运算(三&…