python - 如何从许多中输出单个打印语句并将其余的重定向到python中的null
问题描述
我有一个文件,里面有 3 个打印语句,都是必需的。像这样的东西,
def method1(n: int, m: int, matrix: list) -> list:
for i in range(m):
if i % 2 == 0:
for j in range(n):
print(str(matrix[i][j]), end=" ") # <-- 1
else:
for j in range(n - 1, -1, -1):
print(str(matrix[i][j]), end=" ") # <-- 2
if __name__ == "__main__":
from timeit import timeit
matrix = [[10, 20, 30, 40], [15, 15, 25, 55], [17, 19, 17, 18], [1, 8, 9, 2]]
print(timeit(lambda: method1(4, 4, matrix), number=10000)) # <-- 3
现在我在一个大型项目中有类似的文件,我想检查每个方法运行所需的时间,因此只3
需要并且不需要休息,但是如果我运行目录print
语句中的所有文件,例如1
并2
创建一个大量的混乱与print
来自其他文件的类似冗余语句相结合。
我尝试了什么?
return
尽可能地声明,但是假设有一些方法会遇到类似的声明,
if something:
print(ans)
ans += 1
在哪里交换print
是return
行不通的。
yield
函数,它创建了一个生成器函数,它基本上可以工作,但它会篡改timeit
模块的结果#
单行评论,这是最好的方法,但是如果我评论这些行1
然后2
方法就会中断。编写一个函数,将输出重定向到 null 并
print
通过它传递每个文件的不必要语句。
解决方案
也许设置sys.stdout
为/dev/null
期间timeit
?
if __name__ == "__main__":
from timeit import timeit
import sys
matrix = [[10, 20, 30, 40], [15, 15, 25, 55], [17, 19, 17, 18], [1, 8, 9, 2]]
stdout = sys.stdout
with open('/dev/null', 'w') as sys.stdout:
t = timeit(lambda: method1(4, 4, matrix), number=10000)
sys.stdout = stdout
print(t) # <-- 3
推荐阅读
- django - 在 django rest 框架中处理多部分表单数据时遇到问题
- javascript - 如何在 yyyy-mm-dd 格式的 javascript 中将日期字符串转换为日期对象
- node.js - 时尚商务的 Elasticsearch
- javascript - Mapbox:如何从 http 请求链接获取点之间旅行的持续时间值?
- keras - 将模型从 keras h5 转换为 pytorch - 全连接层不匹配
- android-studio - 打开特定的 Kotlin 文件后,Android Studio 速度变慢
- python - Tkinter 拖放标签信息到数据库
- laravel - Laravel 的视频库
- laravel - 迁移创建期间的 Laravel 8 问题
- c++ - C++:使用 Blackmagic DeckLink SDK 读取访问冲突(this-> x was nullptr)