Print only prints after functions are finished executing
本问题已经有最佳答案,请猛点这里访问。
我有这个代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def get_endpoint(type): return"%s/%s.json" % (v2_endpoint,type) def get_entities(type,endpoint=None,entities=None): if not endpoint: endpoint=get_endpoint(type) entities=[] r=requests.get(endpoint,headers=header) entities.extend(r.json()[type]) if not 'next' in r.links: return entities else: return get_entities(type,r.links['next']['url'],entities) print"Fetching info from New Relic....", servers = get_entities('servers') applications = get_entities('applications') print"Done." |
我注意到,在处理完这些函数之前,它不会打印第一个和最后一个打印语句。我想是预期行为吧。
那么,如何让它在开始处理函数之前打印第一行呢?
1 | print"Fetching info from New Relic....", |
尾随逗号表示打印不应在末尾添加换行符。但是,大多数控制台在没有换行符的情况下不会刷新输出,因此在打印换行符之前,您不会看到输出。
如果去掉逗号,就可以看到它起作用了。
但是,您可以手动刷新输出而不打印新行字符。但您需要手动执行此操作:
1 2 3 4 5 6 | import sys print"Fetching info from New Relic....", sys.stdout.flush() # do stuff print"Done" |