Python中“暂停”(time.sleep?input?)

input函数最是经典,在多种实现中简单粗暴单纯而经济。


(笔记模板由python脚本于2024年11月22日 10:58:38创建,本篇笔记适合比较熟悉python的coder翻阅)


【学习的细节是欢悦的历程】



**  自学并不是什么神秘的东西** ,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。

------ 华罗庚




其中input()最是经典 Python中"暂停" (简单粗暴单纯而经济的实现)



本文质量分:
96 96 96
本文地址: https://blog.csdn.net/m0_57158496/article/details/143977115

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ Python中"暂停"
    • 1、脱颖而出的input
      • 1.1 "暂停"探索
      • 1.2 input()"详解"
    • 2、"暂停"示例
      • 2.1 time.sleep
      • 2.2 threading.Event
      • 2.3 input
      • 2.4 os.system
      • 2.5 raw_input
      • 2.6 timeit.defaulr_timer
    • 3、"暂停"对性能的影响
    • 4、过度使用"暂停"
    • 5、条件性测试代码
    • 6、结论

◆ Python中"暂停"

1、脱颖而出的input

1.1 "暂停"探索

  • 引言
    在Python编程中,实现"暂停"功能有多种方法,但并非所有场景都适用。根据实践经验,选择最合适的"暂停"方式对于提高开发效率和程序稳定性至关重要。

在探索Python的"暂停"功能时,我们发现了time.sleepthreading.Eventinputos.system('pause')raw_inputtimeit.default_timer等多种实现方式:

  • Python暂停工具列表

    python 复制代码
    1、time.sleep
    2、threading.Event
    3、input
    4、os.system('pause')
    5、raw_input
    6、timeit.default_timer

看起来python中有6个暂停之多,除开os.systemraw_input(前者,"指令容器"是外援且"不安全";后者是低版本的input),实际上也就四个可以用于代码执行中的"暂停"。

time.sleep要加载且设定时长,threading.Eventtimeit.default_timer又太"高端",就剩下简单粗暴的input()。根据我的实践经验,"暂停"一般多用于代码程序调试,在成品程序中,除了键盘输入外其实很少用到。所以,我认为一般"不太专业"的调试工作,用input方便经济

  • time.sleep:虽然功能强大,但需要导入time模块并设定具体的暂停时长,对于快速调试来说略显繁琐。
  • threading.Eventtimeit.default_timer:这两个方法在多线程和时间测量方面更为专业,但在简单的调试场景中可能显得有些"高端"。
  • input():无需额外导入,只需一行代码即可实现暂停,非常适合快速调试。

**  由上面的比较,可以看出input在Python中是一种简单而直接的方法来实现暂停,特别适合于非正式的调试场景。**

根据我的实践经验,"暂停"功能在成品程序中并不常见,除了需要用户输入的场景外,几乎不会用到。因此,对于大多数"不太专业"的调试工作,input()无疑是最方便、最经济的选择。

在Python编程中,选择合适的工具和方法对于实现高效、简洁的代码至关重要。对于简单的调试需求,input()是一个非常好的选择!

**  对Python多种工具和方法深入理解后,作出最适选择是一种智慧。**


回页目录


1.2 input()"详解"

  • 默认没有"输入提示"

    help(input): Help on built-in function input in module builtins:

    input(prompt='', /)

    Read a string from standard input. The trailing newline is stripped.

    The prompt string, if given, is printed to standard output without a

    trailing newline before reading input.

    If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.

    On *nix systems, readline is used if available.

    --------- 这是help(input)的内容 ---------

  • "非常"却正是重置其参数

    可以

    python 复制代码
    input(f"\n{' 任意键继续...... ':-^37}")

    一般

    python 复制代码
    input(f"\n变量实况:{value}") 

    这是我对input()的非常常规。😎😎😎

input()函数默认情况下是没有提示信息的。当调用input()函数时,它会暂停程序的执行,等待用户输入内容,并返回用户输入的字符串。

input()函数可以接受一个可选的prompt参数,该参数用于提供给用户的提示信息。当您传递一个提示字符串给input()时,它会打印该字符串,然后等待用户输入内容。也可以传入一个"对象",input()将打印输出该对象的str属性。

  • 以下是一些input()函数的使用示例:

    a a a. 默认用法 (没有提示信息):

    python 复制代码
    user_input = input()

    这个调用会暂停程序的执行,等待用户输入内容,并返回用户输入的字符串。

    b b b. 带有提示信息的用法

    python 复制代码
    user_input = input("请输入您的名字: ")

    这个调用会暂停程序的执行,并打印出提示信息"请输入您的名字:",然后等待用户输入内容,并返回用户输入的字符串。

    c c c. 非常规用法 (使用格式化字符串作为提示信息):

    python 复制代码
    user_input = input(f"\n{' 任意键继续...... ':-^37}")

    这个调用会暂停程序的执行,并打印出格式化的提示信息" 任意键继续...... ",然后等待用户按键,直到用户"回车"后才继续执行后面的代码。(这"非常"操作不用接收键盘输入内容,直接放弃对input返回字符串的接收。)


回页目录


2、"暂停"示例

在Python中,虽然没有直接名为 wait()pause() 的内置函数,但是你可以使用几个不同的方法来实现类似的效果。

以下是一些常用的方法:

2.1 time.sleep

  • 使用 time.sleep()函数:
    这是暂停Python程序执行最常见的方式。 time.sleep() 函数接受一个参数,表示暂停的秒数。

    python 复制代码
    import time
    
    
    time.sleep(5)  # 暂停5秒
     

2.2 threading.Event

  • 使用 threading.Event()
    如果你在使用多线程,并且想要在某个条件满足之前暂停线程,可以使用 threading.Event()

    python 复制代码
     import threading
    
    
     event = threading.Event()
     # 设置事件,允许等待该事件的线程继续执行
     event.set()
     # 等待事件,线程将在这里暂停,直到event.set()被调用
     event.wait()
     

2.3 input

  • 使用 input() 函数:
    在简单的脚本中,如果你想要程序暂停直到用户输入某些内容,可以使用 input() 函数。

    python 复制代码
    user_input = input("按回车键继续...")
     

2.4 os.system

  • 使用 os.system('pause')
    在 W i n d o w s Windows Windows系统中,可以使用 os.system('pause') 来暂停脚本,它将显示"请按任意键继续. . ."的消息。

    python 复制代码
    import os
    
    
    os.system('pause')
     

2.5 raw_input

  • 使用 raw_input()(Python 2.x):
    在Python 2中, raw_input() 函数可以用来实现暂停,不过这在Python 3中已经被 input() 取代。

2.6 timeit.defaulr_timer

  • 使用 timeit.default_timer()
    如果你需要更精确的时间控制,可以使用 timeit.default_timer() 来获取当前时间,并基于此进行计算和暂停。

每种方法都有其适用的场景,你可以根据具体需求选择合适的方法。在多线程编程中, threading.Event() 可能是更好的选择,而在简单的脚本中, time.sleep() 通常就足够了。


回页目录


3、"暂停"对性能的影响

在上述方法中,如果考虑对性能的影响,通常 time.sleep() 函数对性能的影响是最小的,因为它直接由操作系统处理,不会涉及复杂的线程操作或其他资源消耗。

time.sleep() 的工作原理是让当前线程暂停指定的时间。在这段时间内,线程不会占用 C P U CPU CPU资源,因此不会对系统性能产生显著影响。操作系统会处理线程的调度,当指定的时间到达后,线程会自动恢复执行。

其他方法,如 threading.Event()input() ,可能会涉及更多的资源管理和上下文切换:

  • 1、threading.Event()

    当线程等待一个事件时,虽然它不会占用CPU资源,但是线程的状态管理和事件的通知机制可能会引入一些额外的开销。

  • 2、input()

    会等待用户输入,这通常涉及到标准输入的处理,可能会阻塞主线程,直到用户提供了输入。这不会影响 C P U CPU CPU性能,但会阻塞程序的执行。

  • 3、os.system('pause')raw_input()在性能影响上类似于 input(),它们会导致程序暂停,直到用户交互。

总的来说 ,如果你只是想要程序暂停一段时间,而不涉及用户输入或多线程同步, time.sleep()是性能影响最小的选择。不过,需要注意的是,即使 time.sleep()对性能的影响很小,也不应该在程序中过度使用,尤其是在高并发的服务端程序中,不恰当的睡眠可能会导致服务响应缓慢。


回页目录


4、过度使用"暂停"

"在程序中过度使用暂停",这是一个"没有意义"的命题。完全是多虑了!

  • 我的理解和实践是:

    • 1、"暂停"主要是"非正式"的,在最终"完成"的代码中,一般是没有"程序调试"语句存在的,除非为了标识,那也是以不影响的注释行保留在代码中。
    • 2、当有"信息需要告知用户"或等待用户输入/确认时,才有"暂停语句"行。
  • 我的ai学伴
    您的理解和实践是正确的。在正式的、最终完成的代码中,确实应该避免不必要的暂停,特别是那些用于调试目的的 time.sleep() 调用。

  • 以下是几个最佳实践:

    • 移除调试代码:
      在代码开发阶段,使用 time.sleep() 或其他暂停语句来帮助调试是常见的做法。但是,在代码准备发布之前,应该移除这些调试语句,以确保程序能够高效运行。
    • 用户通知和输入:
      如果需要告知用户信息或等待用户输入/确认,使用 input() 或其他用户交互方式是合适的。这些暂停是程序逻辑的一部分,对于用户体验是必要的。
    • 注释保留:
      如果某些暂停语句是为了特定的调试目的,并且可能在未来再次需要,可以考虑将其注释掉而不是直接删除,这样可以在需要时快速恢复。
    • 使用日志记录:
      在正式代码中,使用日志记录(例如Python的 logging 模块)来记录程序的状态和事件,而不是使用暂停来观察程序行为。
    • 条件性调试代码:
      如果需要在生产环境中保留某些调试功能,可以设置一个配置选项或环境变量来控制调试代码的执行。这样可以在不修改代码的情况下,通过更改配置来启用或禁用调试功能。
    • 性能测试:
      在发布前进行性能测试,确保没有遗留的暂停语句或其他性能瓶颈。

通过遵循这些最佳实践,可以确保代码既保持了可维护性,又能在生产环境中高效运行。


回页目录


5、条件性测试代码

" 条件性调试代码: 如果需要在生产环境中保留某些调试功能,可以设置一个配置选项或环境变量来控制调试代码的执行。这样可以在不修改代码的情况下,通过更改配置来启用或禁用调试功能。"


  • 这个逻辑,我已实践并享用过。
    我有个"工程 ",在线收集我的数百篇csdn学习笔记的"阅读点赞收藏"等信息 ,就设置了一个"机关",仅当开启时,才会random.choices(ids, k=8),用少量数据测试修改或者迭代过的"工程"状况,非常方便和实用。😎😎

  • ai学伴
    听起来您已经很好地应用了条件性调试代码的概念,并且在实际项目中取得了良好的效果。使用random.choices()来选择少量的数据集进行测试是一种高效的方法,因为它可以帮助您快速验证代码的更改,而不会影响到整个数据集的处理。

以下是一些可以进一步优化和扩展的建议:

  1. 配置文件:您可以使用配置文件(如JSON、YAML或INI格式)来存储调试设置,这样可以在不修改代码的情况下轻松更改配置。

  2. 环境变量:通过环境变量来控制调试模式,可以在部署时通过更改环境配置来启用或禁用调试,这对于云服务和容器化部署特别有用。

  3. 命令行参数:如果您的"工程"是通过命令行运行的,可以添加命令行参数来控制调试模式。

  4. 日志级别:除了控制数据集的大小,还可以根据配置来调整日志级别,以便在调试模式下输出更详细的日志信息。

  5. 断言和日志 :在调试模式下,可以使用Python的assert语句来检查代码中的假设,并结合日志记录来提供更多的调试信息。

  6. 单元测试:对于更复杂的逻辑,可以编写单元测试来验证代码的正确性,这些测试可以在调试模式下自动运行。

  7. 代码分割:将调试代码和核心逻辑分离,可以使得代码更加清晰,并且更容易维护。

  8. 文档:确保记录了如何启用和禁用调试模式,以及调试模式下的预期行为,这对于其他开发者或未来的自己来说是非常有用的。

通过这些方法,您可以更灵活地控制调试过程,同时确保生产环境的稳定性和性能。再次强调,这种实践是提高代码质量和开发效率的有效手段。😊👍


回页目录


6、结论

i n p u t input input,知名,易用,强大,方便。

   它 它 它是python中非常随性的"暂停"工具。


回页首


上一篇:  我要扛起lambda"节操捍卫"大旗,为其"一次性"标签正名~(短于"鳏夫",不可"额外夹带";优于对"简单"逻辑身轻如燕,优雅飘逸,起降随心)~
下一篇:


我的HOT博:

本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k 的有 7 7 7篇。


推荐条件 阅读量突破6.00k (更多热博,请点击蓝色文字跳转翻阅)


  • 截屏图片

      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺"未过审"还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识"曾经"。2023-12-31)

回页首


精品文章:

来源:老齐教室


Python 入门指南【Python 3.6.3】


好文力荐:


CSDN实用技巧博文:


相关推荐
Jason-河山37 分钟前
利用Java爬虫获取商品评论:技术与实践
java·爬虫·python
胖哥真不错41 分钟前
Python实现随机分布式延迟PSO优化算法(RODDPSO)优化CNN回归模型项目实战
python·项目实战·cnn回归模型·roddpso·随机分布式延迟pso优化算法
Easy数模1 小时前
竞赛思享会 | 2024年第十届数维杯国际数学建模挑战赛D题【代码+演示】
python·算法·数学建模
知识的宝藏1 小时前
Django如何配置多个环境的MySQL数据库
python·django
往日情怀酿做酒 V17639296381 小时前
Django基础配置
后端·python·django
凌虚(失业了求个工作)2 小时前
RAG 示例:使用 langchain、Redis、llama.cpp 构建一个 kubernetes 知识库问答
人工智能·redis·python·langchain·llama
0zxm2 小时前
01.Django快速入门
数据库·vscode·python·django·sqlite
数据小爬虫@2 小时前
利用Python爬虫获取淘宝商品评论:实战案例分析
开发语言·爬虫·python
逝去的紫枫3 小时前
Python PIL:探索图像处理的无限可能
图像处理·人工智能·python