python 2 函数在没有任何导入的情况下花费 运行 的时间;可能吗?

Time a python 2 function takes to run WITHOUT ANY imports; is it possible?

所以,我最近的任务是在 python 2 中编写一个函数,该函数可以为另一个函数的执行计时。这很简单,但要注意的是我必须在不导入任何模块的情况下完成它;这自然包括时间、timeit 等

仅使用内置函数和语句(例如sum(), or, yield)这可能吗?

我不想看到解决方案,我需要自己解决这个问题,但如果知道这是否可能,我将不胜感激。如果没有,那我宁愿不浪费时间用头撞砖墙。

简单回答:,不可能。

这里有 link 到 python 2.7 内置函数文档。 None 其中允许您测量时间。您被迫使用模块。

Python 被认为与它的模块一起使用,它包含了它们的一个很好的混合体。我会建议你花时间做这件事。

抱歉打扰了您的梦想<3

如果您使用的是 UNIX(或者可能只是 Linux)系统,。阅读 /proc/uptime。 它不是超级高效,但是嘿,只是内置函数。 我不确定在 Windows.

上执行此操作的方法

根据 OS 你运行宁和你能接受多混乱的解决方案,你可以在没有进口的情况下做到这一点。

按疯狂程度递增排序:

  1. 一些系统提供包含各种计时器的虚拟文件。您至少可以在 Linux 系统上通过在执行前后从此类文件中读取计数器来获得亚秒级分辨率。其他的不清楚。

  2. 你能重用现有的导入吗?如果文件已经包含 threadingmultiprocessingsignal 中的任何一个,您可以用它们构造一个计时器。

  3. 如果您的系统上有某种调度程序 运行ning(例如 cron),您可以向其中注入一个作业(通过创建一个文件),它会在每个时间打印出时间戳现在是 运行.

  4. 您可以在繁忙的系统上关注日志文件,并假设最后一条消息接近您阅读它的时间。

  5. 根据您想要的准确性,您可以测量每个 python 字节码操作所花费的时间,然后为通过 function.__code__.co_code 提供的代码编写解释器。当您 运行 代码时,您可以总结所有预期的执行时间。这是唯一不需要特定 OS / 环境的纯 python 解决方案。

  6. 如果您运行正在使用允许进程内存自省的系统,您可以打开它并注入任何功能,而无需技术上导入任何东西。

两个 "cheating" 方法。

如果您要避免使用 import 关键字,您可以使用 __import__ 导入 time,这实际上是 python2 可执行文件的内置模块。

如果您知道 Python 安装位置,您可以在 os.py 上使用 execfile 并使用 times 功能。