()
return 0
Run the wx event loop by processing pending events only.

    This is like inputhook_wx1, but it keeps processing pending events
    until stdin is ready.  After processing all pending events, a call to
    time.sleep is inserted.  This is needed, otherwise, CPU usage is at 100%.
    This sleep time should be tuned though for best performance.
Run the wx event loop by processing pending events only.
Run the wx event loop by processing pending events only .
def inputhook_wx3():
    """Run the wx event loop by processing pending events only.

    This is like inputhook_wx1, but it keeps processing pending events
    until stdin is ready.  After processing all pending events, a call to
    time.sleep is inserted.  This is needed, otherwise, CPU usage is at 100%.
    This sleep time should be tuned though for best performance.
    """
    # We need to protect against a user pressing Control-C when IPython is
    # idle and this is running. We trap KeyboardInterrupt and pass.
    try:
        app = wx.GetApp()  # @UndefinedVariable
        if app is not None:
            assert wx.Thread_IsMain()  # @UndefinedVariable

            # The import of wx on Linux sets the handler for signal.SIGINT
            # to 0.  This is a bug in wx or gtk.  We fix by just setting it
            # back to the Python default.
            if not callable(signal.getsignal(signal.SIGINT)):
                signal.signal(signal.SIGINT, signal.default_int_handler)

            evtloop = wx.EventLoop()  # @UndefinedVariable
            ea = wx.EventLoopActivator(evtloop)  # @UndefinedVariable
            t = clock()
            while not stdin_ready():
                while evtloop.Pending():
                    t = clock()
                    evtloop.Dispatch()
                app.ProcessIdle()
                # We need to sleep at this point to keep the idle CPU load
                # low.  However, if sleep to long, GUI response is poor.  As
                # a compromise, we watch how often GUI events are being processed
                # and switch between a short and long sleep time.  Here are some
                # stats useful in helping to tune this.
                # time    CPU load
                # 0.001   13%
                # 0.005   3%
                # 0.01    1.5%
                # 0.05    0.5%
                used_time = clock() - t
                if used_time > 10.0:
                    # print 'Sleep for 1 s'  # dbg
                    time.sleep(1.0)
                elif used_time > 0.1:
                    # Few GUI events coming in, so we can sleep longer
                    # print 'Sleep for 0.05 s'  # dbg
                    time.sleep(0.05)
                else:
                    # Many GUI events coming in, so sleep only very little
                    time.sleep(0.001)
            del ea
    except KeyboardInterrupt:
        pass
    return 0
def inputhook_wx3 ( ) : # We need to protect against a user pressing Control-C when IPython is # idle and this is running. We trap KeyboardInterrupt and pass. try : app = wx . GetApp ( ) # @UndefinedVariable if app is not None : assert wx . Thread_IsMain ( ) # @UndefinedVariable # The import of wx on Linux sets the handler for signal.SIGINT # to 0.  This is a bug in wx or gtk.  We fix by just setting it # back to the Python default. if not callable ( signal . getsignal ( signal . SIGINT ) ) : signal . signal ( signal . SIGINT , signal . default_int_handler ) evtloop = wx . EventLoop ( ) # @UndefinedVariable ea = wx . EventLoopActivator ( evtloop ) # @UndefinedVariable t = clock ( ) while not stdin_ready ( ) : while evtloop . Pending ( ) : t = clock ( ) evtloop . Dispatch ( ) app . ProcessIdle ( ) # We need to sleep at this point to keep the idle CPU load # low.  However, if sleep to long, GUI response is poor.  As # a compromise, we watch how often GUI events are being processed # and switch between a short and long sleep time.  Here are some # stats useful in helping to tune this. # time    CPU load # 0.001   13% # 0.005   3% # 0.01    1.5% # 0.05    0.5% used_time = clock ( ) - t if used_time > 10.0 : # print 'Sleep for 1 s'  # dbg time . sleep ( 1.0 ) elif used_time > 0.1 : # Few GUI events coming in, so we can sleep longer # print 'Sleep for 0.05 s'  # dbg time . sleep ( 0.05 ) else : # Many GUI events coming in, so sleep only very little time . sleep ( 0.001 ) del ea except KeyboardInterrupt : pass return 0