在循环中动态调用和打印函数的 return 值,覆盖以前的输出
Dynamically call and print a function's return-value within a loop, overwrite previous outputs
我正在寻找在 python 3.
中动态打印变量的最简洁方法
我想重复调用 psutil.virtual_memory()
并在适当的位置打印其 return 值。
像这样:
import psutil
import time
memory = psutil.virtual_memory()
while True:
print(f"Memory: {memory}")
time.sleep(0.5)
当然不会是动态的。我希望 "memory" 在同一行上每 0.5 秒更新一次。
我似乎找不到一个清晰的示例来说明如何以这种方式执行此操作。
更新:我也想了解如何使用多行打印语句执行此操作。
像这样
Memory: 500MB
CPU Usage: 25%
添加回车 return 以进行打印。
import psutil
import time
def memory():
return psutil.virtual_memory()
while True:
print(f"Memory: {memory()}", end="\r", flush=True)
time.sleep(0.5)
只需将 print(..., end='\r')
添加到打印语句的末尾即可。
这会将光标带到行首,因此后续打印将覆盖它。
f-strings 允许您首先直接打印函数调用或表达式,所以就这样做吧。 (首先不需要将过时的 return 值存储到变量中)
while True:
print(f"Memory: {psutil.virtual_memory()}")
time.sleep(0.5)
更新:在您接受答案后,我们推断当您说 “就地打印值” 时,您实际上是指 "覆盖之前打印的输出(在控制台上)"
“就地”实际上是一个不同的术语,通常指的是“不分配新内存的变量赋值”。最好说 “在控制台上覆盖”。
我正在寻找在 python 3.
中动态打印变量的最简洁方法我想重复调用 psutil.virtual_memory()
并在适当的位置打印其 return 值。
像这样:
import psutil
import time
memory = psutil.virtual_memory()
while True:
print(f"Memory: {memory}")
time.sleep(0.5)
当然不会是动态的。我希望 "memory" 在同一行上每 0.5 秒更新一次。
我似乎找不到一个清晰的示例来说明如何以这种方式执行此操作。
更新:我也想了解如何使用多行打印语句执行此操作。
像这样
Memory: 500MB
CPU Usage: 25%
添加回车 return 以进行打印。
import psutil
import time
def memory():
return psutil.virtual_memory()
while True:
print(f"Memory: {memory()}", end="\r", flush=True)
time.sleep(0.5)
只需将 print(..., end='\r')
添加到打印语句的末尾即可。
这会将光标带到行首,因此后续打印将覆盖它。
f-strings 允许您首先直接打印函数调用或表达式,所以就这样做吧。 (首先不需要将过时的 return 值存储到变量中)
while True:
print(f"Memory: {psutil.virtual_memory()}")
time.sleep(0.5)
更新:在您接受答案后,我们推断当您说 “就地打印值” 时,您实际上是指 "覆盖之前打印的输出(在控制台上)"
“就地”实际上是一个不同的术语,通常指的是“不分配新内存的变量赋值”。最好说 “在控制台上覆盖”。