我想知道如何配置Ipython,以便它將最後一個命令的運行時間以毫秒/秒添加到正確的命令提示符處。這可以在ZSH/Bash shell中完成,如此處所示https://coderwall.com/p/kmchbwIpython自定義提示以顯示單元格運行時間
我該如何去做這件事?
我想知道如何配置Ipython,以便它將最後一個命令的運行時間以毫秒/秒添加到正確的命令提示符處。這可以在ZSH/Bash shell中完成,如此處所示https://coderwall.com/p/kmchbwIpython自定義提示以顯示單元格運行時間
我該如何去做這件事?
這是一個代碼段次,每次發言,並打印出來就在接近下一個提示調整,也使得通過名稱「texc」訪問的價值。
# Assumes from __future__ import print_function
from time import time
import blessings # Not a necessary requirement
class ExecTimer(object):
def __init__(self, ip):
self.shell = ip
self.t_pre = time()
self.texc = 0
self.prev_texc = 0
self.term = blessings.Terminal()
def pre_execute(self):
self.t_pre = time()
def post_execute(self):
self.prev_texc = self.texc
self.texc = round(time() - self.t_pre, 4)
print(self.term.bold_blue(
'{} s'.format(self.texc).rjust(self.term.width - 1)
))
# Only add or update user namespace var if it is safe to do so
if 'texc' not in self.shell.user_ns or \
self.shell.user_ns['texc'] == self.prev_texc:
self.shell.push({'texc': self.texc})
else:
pass
def register(self):
self.shell.events.register('pre_execute', self.pre_execute)
self.shell.events.register('post_execute', self.post_execute)
ExecTimer(get_ipython()).register()
要打印在它上面的在提示符代替,取出打印,並且在ipython_config.py組:
c.PromptManager.in_template = '{texc} s\nIn[\\#]: '
或在同一個文件(startup.py)使用
get_ipython().run_line_magic(
'config',
r"PromptManager.in_template = '{texc} s\nIn[\\#]: '"
)
對於那些有興趣的人,請參考在Github中打開的這個問題。
谷歌「ipython自定義提示」? – hivert
@hivert,我試過了,我在github中打開了一個問題。問題在於單元的時間不是靜態的,但文檔中給出的例子都是靜態的。 – zsljulius
另外,你可以很容易地寫一個裝飾函數... –