runpy– 找到并执行Python模块 源代码: Lib / runpy.py runpymodule用于定位和运行Python模块,首先使用它们。它的主要用途是实现-m命令行开关,允许使用Python模块命名空间而不是文件系统定位脚本. 注意这是not沙盒模块 – 所有代码都在当前进程中执行,任何副作用(如其他模块的缓存导入)将在函数返回后保留在原位. 此外,执行代码定义的任何函数和类都不能保证在runpy函数返回后正常工作。如果对于给定的用例不能接受该限制,importlib可能是比这个模块更合适的选择. runpy模块提供两个功能: runpy.run_modu

modulefinder– 查找脚本使用的模块 源代码: Lib / modulefinder.py 这个模块提供了ModuleFinder类,可以用来确定脚本导入的模块集。modulefinder.py也可以作为脚本运行,给出Python脚本的文件名作为参数,之后将打印导入模块的输出端口. modulefinder.AddPackagePath(pkg_name, path) 记录名为pkg_name可以在指定的path. modulefinder.ReplacePackage(oldname, newname) 中找到,指定名为oldname的模块实际上是名为newname.

__main__– 顶级脚本环境 “__main__”是顶级代码执行的作用域的名称。当从标准输入,脚本或从中读取时,模块的__name__被设置为等于”__main__”交互式提示. 模块可以通过检查自己的__name__来发现它是否在主范围内运行,这允许在模块运行时有条件地执行模块中的代码的常用习惯用法脚本或用python-m而不是导入时: if __name__ == “__main__”: # execute only if run as a script main() 对于一个包,可以通过包含一个__main__.py模块来实现相同的效果,其内容将被执行使用-m.

trace– 跟踪或跟踪Python语句执行 源代码: Lib / trace.py trace模块允许您跟踪程序执行,生成带注释的语句覆盖列表,打印调用者/被调用者关系以及在程序运行期间执行的列表函数。它可以在命令行中用于另一个编程器. 另请参阅 Coverage.py 一个流行的第三方覆盖工具,提供HTMLoutput以及分支覆盖等高级功能. 命令 – 线路使用 trace可以从命令行调用模块。它可以简单地作为 python -m trace –count -C . somefile.py … 以上将执行somefile.py并生成在执行过程中导入的所有Pyt

Python Profilers 源代码: Lib / profile.py和Lib / pstats.py 剖析器介绍 cProfile和profile提供deterministic profilingPython程序。一个 profile是一组统计信息,描述了程序的各个部分的执行时间和执行时间。这些统计数据可以通过pstats模块 Python标准库提供了相同配置接口的两种不同实现: cProfile建议大多数用户使用;它是一个具有合理开销的C扩展,使其适用于分析长时间运行的程序。基于lsprof,由Brett Rosen和TedCzotter撰写. profile,一个纯粹的Python

使用asyncio进行开发 异步编程与经典的“顺序”编程不同. 本页列出了常见的错误和陷阱,并解释了如何避免它们. 调试模式 默认情况下,asyncio在生产模式下运行。为了简化开发,asyncio有debug mode. 有几种方法可以启用asyncio调试模式: 将PYTHONASYNCIODEBUG环境变量设置为1. 使用-X dev Python命令行选项. Passing debug=True到asyncio.run(). 调用loop.set_debug(). 除了启用调试模式外,还要考虑: 将 asyncio logger 的日志级别设置为logging.DEBUG,例如,可以在

事件循环 前言 事件循环是每个asyncio应用程序的核心。事件循环运行异步任务和回调,执行networkIO操作,并运行子进程. 应用程序开发人员通常应该使用高级asyncio函数,例如asyncio.run(),并且很少需要引用loopobject或调用其方法。本节主要面向低级代码,库和框架的作者,他们需要更好地控制事件循环行为. 获取事件循环 以下低级函数可用于获取,设置或创建事件循环: asyncio.get_running_loop() 返回当前操作系统线程中的运行事件循环 如果没有运行事件循环,则会引发RuntimeError。此函数只能从协程或回调调用. 新版本3.7. asyn

子进程 本节介绍高级异步/等待asyncio API创建和管理子进程. 这是一个asyncio如何运行shell命令并获得结果的示例: import asyncioasync def run(cmd): proc = await asyncio.create_subprocess_shell( cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE) stdout, stderr = await proc.communicate() print(f”[{cmd!r} exited with {proc.return

contextvars– 上下文变量 此模块提供API来管理,存储和访问context-localstate。ContextVar类用于声明和使用Context Variables。copy_context()功能和Contextclass应该用于管理异步框架中的当前上下文. 有状态的文本管理器应该使用Context Variables而不是threading.local()在并发代码中使用时,防止他们的状态意外地从其他代码中出来. 也可以看看 PEP 567 了解更多详情. 版本3.7. 上下文变量 class contextvars.ContextVar(name [, *,

sched– 事件调度程序 源代码: Lib / sched.py sched模块定义了一个实现通用事件调度程序的类: class sched.scheduler(timefunc=time.monotonic, delayfunc=time.sleep) schedulerclass定义了一个调度事件的通用接口。它需要两个函数来实际处理“外部世界” – timefunc应该可以不带参数调用,并返回一个数字(“时间”,任何单位)。如果time.monotonic不可用,则timefunc默认为time.time。delayfunc函数应该可以使用one//gument调