Python sns catplot结果函数打印外部装饰器计时器函数
我有很好的工作能力。很长,但开头是:Python sns catplot结果函数打印外部装饰器计时器函数,python,decorator,Python,Decorator,我有很好的工作能力。很长,但开头是: from timer import timer @timer def Klasse3(): while True: jaar = input('Welk jaar wil je zien: ') try: jaar = int(jaar) except ValueError: print ('Er ging iets mis: het li
from timer import timer
@timer
def Klasse3():
while True:
jaar = input('Welk jaar wil je zien: ')
try:
jaar = int(jaar)
except ValueError:
print ('Er ging iets mis: het lijkt er op dat je geen jaartal invoerde.')
continue
if 2017 <= jaar < 2020:
print(f'{jaar} is beschikbaar in de database. Een klein moment geduld a.u.b.')
print('Processing request......')
break
else:
print ('Helaas, alleen de jaren 2017,2018 en 2019 zijn beschikbaar.')
从开头可以看出,我使用了一个装饰器:@timer:
import sys
import time
import functools
def timer(func):
"""Print the runtime of the decorated function"""
@functools.wraps(func)
def wrapper_timer(*args, **kwargs):
start_time = time.perf_counter() # 1
value = func(*args, **kwargs)
end_time = time.perf_counter() # 2
run_time = end_time - start_time # 3
print(f"Deze functie nam {run_time:.2f} seconden in beslag.")
print('Dank u wel voor het gebruiken van onze online analyse tool. Graag tot een volgende keer.')
return value
return wrapper_timer
功能和装饰都很好。功能上没有问题。但是seaborn地块(效果也很好)在我的计时器装饰器中的最终打印之后打印。这很奇怪,不应该也是。
函数应该运行(在计时器装饰器内部),完成完整的函数后,计时器装饰器应该打印:此函数需要。。。。秒和谢谢打印
但相反,计时器功能的最后一部分在SNS绘图之前打印,如下图所示。
我能做些什么(Jupiter笔记本)让sns打印在正确的地方?那么,带秒和谢谢的句子(荷兰的dank u wel等)在情节结束后打印出来?
提前谢谢,简
在贝斯拉格的第二场比赛中,德兹·芬斯蒂·南14.08秒
这是一个在线分析工具。格拉格·托恩·沃根德·科尔
matplotlib图形显示在单独的线程中。大多数图形软件包都是这样绘制的。主线程中的计时器和打印输出不受显示线程处理的影响。绘图在单独的线程中绘制。线程和图形一般都是这样工作的。我不确定我能帮到更多的忙。不用担心,很高兴你找到了答案!谢谢我添加了一个答案,如果有帮助的话,请您接受。
import sys
import time
import functools
def timer(func):
"""Print the runtime of the decorated function"""
@functools.wraps(func)
def wrapper_timer(*args, **kwargs):
start_time = time.perf_counter() # 1
value = func(*args, **kwargs)
end_time = time.perf_counter() # 2
run_time = end_time - start_time # 3
print(f"Deze functie nam {run_time:.2f} seconden in beslag.")
print('Dank u wel voor het gebruiken van onze online analyse tool. Graag tot een volgende keer.')
return value
return wrapper_timer