是否可以在Python中暂时重定向stdout/stderr(即在方法的持续时间内)?
当前解决方案(我最初记得但后来忘记了)的问题在于它们没有重定向 ; 相反,他们只是完整地替换了流.因此,如果一个方法有一个本地副本,一个变量的任何原因(例如,由于流被作为参数传递的东西),它不会工作.
有解决方案吗
我正在cProfile尝试尝试分析我的代码:
pr = cProfile.Profile()
pr.enable()
my_func() # the code I want to profile
pr.disable()
pr.print_stats()
Run Code Online (Sandbox Code Playgroud)
但是,结果太长,无法在Spyder终端中完全显示(看不到运行时间最长的函数调用...)。我也尝试使用保存结果
cProfile.run('my_func()','profile_results')
Run Code Online (Sandbox Code Playgroud)
但是输出文件的格式不是人类可读的格式(尝试使用带.txt后缀和不带后缀)。
所以我的问题是如何将分析结果保存到人类可读的外部文件中(例如以.txt正确显示所有单词的格式)?