所以,我最近的任务是在python 2中编写一个函数,可以计算另一个函数的执行时间。这很简单,但问题是我必须这样做而不导入任何模块;这自然包括时间,时间等。
仅使用内置函数和语句(例如sum(), or, yield
)这是否可能?
我不想看到解决方案,我需要为自己解决这个问题,但我非常希望知道这是否可行。如果没有,那么我宁可不要浪费时间把头撞在众所周知的砖墙上。
答案 0 :(得分:3)
如果您使用的是UNIX(或者只是Linux)系统,是。阅读/proc/uptime
。
它不是超级高效,但仅仅是内置功能。
我不确定如何在Windows上执行此操作。
答案 1 :(得分:3)
易:
def measure_runtime(function):
function()
return 0
结果是megayears中的时间为整数。我个人保证其准确性。如果我从现有的身体转移到更耐用的身体,保证就会失效。
答案 2 :(得分:2)
简单回答:否,这是不可能的。
这里有一个内置函数docs的python 2.7的link。它们都不允许您测量时间。您被迫使用模块。
Python被认为与其模块一起使用,它包含了很多混合模型。我建议你把时间花在这个上。
抱歉打破了你的梦想< 3
答案 3 :(得分:1)
根据您正在运行的操作系统以及您可以接受的混乱解决方案,您可以在不进口的情况下执行此操作。
增加精神错乱:
某些系统提供包含各种计时器的虚拟文件。通过在执行前后从该类文件中读取计数器,您至少可以在Linux系统上获得亚秒级分辨率。不确定其他人。
您可以重复使用现有的进口产品吗?如果该文件已包含threading
,multiprocessing
,signal
中的任何一个,则可以构建一个计时器。
如果您的系统上运行某种调度程序(如cron),您可以在其中注入一个作业(通过创建文件),每次运行时都会打印出时间戳。 / p>
您可以在繁忙的系统上关注日志文件,并假设最后一条消息接近您阅读的时间。
根据您想要的准确度,您可以测量每个python字节码操作所花费的时间,然后通过function.__code__.co_code
为可用代码编写解释器。运行代码时,可以总结所有预期的执行时间。这是唯一不需要特定操作系统/环境的纯Python解决方案。
如果您在允许进程内存自省的系统上运行,则可以打开它并注入任何功能,而无需技术导入任何内容。
答案 4 :(得分:1)
两个"作弊"方法
如果您要避开import
关键字,可以使用__import__
导入time
,这实际上是内置于python2
可执行文件的模块。< / p>
如果您知道Python安装的位置,可以在execfile
上使用os.py
并使用times
功能。