【问题标题】:Jupyter / Colab : Play sound with any error in any cell + Play sound after completing long running cellsJupyter / Colab:在任何单元格中播放任何错误的声音+在完成长时间运行的单元格后播放声音
【发布时间】:2020-07-25 08:43:18
【问题描述】:

有时会发生错误,但我没有注意到,因为我可能同时运行多个单元格。

我想让错误播放声音。

许多人希望长时间运行的单元格在完成后播放声音。

【问题讨论】:

    标签: python jupyter-notebook google-colaboratory


    【解决方案1】:

    我混合了我在某些地方找到的解决方案1234

    a) 创建一个在错误时发出哔哔声的全局异常处理程序

    b) 创建一个简单的函数,放置在长时间运行的单元格的末尾(链接上的一些其他方法)

    您可以将声音更改为您喜欢的任何内容。

    注意:异常处理程序和 beep_completed() 内部的声音非常不同,并且是有原因的。第一个简短且不烦人,第二个冗长且令人愉快(如果您远离计算机,因此您可以清楚地听到任务已完成)。在任何情况下,您都可以替换它们。

    注意:有一条线仅适用于 Colab。如果您可以为 Jupyter 提供一个,我很乐意更新答案。

    # This line is specific for Colab  (please provide alternative for Jupyter)
    from google.colab import output
    
    from IPython.core.ultratb import AutoFormattedTB
    
    # Catch any Exception, play error sound and re-raise the Exception
    #-------------------------------------------------
    # initialize the formatter for making the tracebacks into strings
    itb = AutoFormattedTB(mode = 'Plain', tb_offset = 1)
    
    # this function will be called on exceptions in any cell
    def custom_exc(shell, etype, evalue, tb, tb_offset=None):
    
        # still show the error within the notebook, don't just swallow it
        shell.showtraceback((etype, evalue, tb), tb_offset=tb_offset)
    
    
        # Play an audio beep. Any audio URL will do.  
        output.eval_js('new Audio("http://soundbible.com/grab.php?id=419&type=wav").play()')
    
        # # grab the traceback and make it into a list of strings
        # stb = itb.structured_traceback(etype, evalue, tb)
        # sstb = itb.stb2text(stb)
    
        # print (sstb) # <--- this is the variable with the traceback string
        # print ("sending mail")
        # send_mail_to_myself(sstb)
    
    # this registers a custom exception handler for the whole current notebook
    get_ipython().set_custom_exc((Exception,), custom_exc)
    #------------------------------------------
    
    
    # Function to play a sound (to put at the end of a long job)
    def beep_completed():
      #url_sound="http://soundbible.com/grab.php?id=1795&type=mp3";
      output.eval_js('new Audio("http://soundbible.com/grab.php?id=1795&type=mp3").play()')
    
    # Just play it with
    beep_completed()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多