如何从多个打印语句中输出单个打印语句并将其余部分重定向到 python 中的 null
How to output a single print statement out of many and redirect the rest to null in python
我有一个文件,里面有 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
语句。
也许在 timeit
期间将 sys.stdout
设置为 /dev/null
?
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
我有一个文件,里面有 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
语句。
也许在 timeit
期间将 sys.stdout
设置为 /dev/null
?
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