示例#1
0
def startLoop():
    """
    Use nested asyncio event loop for Jupyter notebooks.

    This is not needed anymore in Jupyter versions 5 or higher.
    """
    def _ipython_loop_asyncio(kernel):
        """Use asyncio event loop for the given IPython kernel."""
        loop = asyncio.get_event_loop()

        def kernel_handler():
            kernel.do_one_iteration()
            loop.call_later(kernel._poll_interval, kernel_handler)

        loop.call_soon(kernel_handler)
        try:
            if not loop.is_running():
                loop.run_forever()
        finally:
            if not loop.is_running():
                loop.run_until_complete(loop.shutdown_asyncgens())
                loop.close()

    patchAsyncio()
    loop = asyncio.get_event_loop()
    if not loop.is_running():
        from ipykernel.eventloops import register_integration, enable_gui
        register_integration('asyncio')(_ipython_loop_asyncio)
        enable_gui('asyncio')
示例#2
0
 def enable_gui(self, gui=None):
     """Enable GUI integration for the kernel."""
     from ipykernel.eventloops import enable_gui
     if not gui:
         gui = self.kernel.gui
     enable_gui(gui, kernel=self.kernel)
     self.active_eventloop = gui
示例#3
0
def startLoop():
    """
    Use asyncio event loop for Jupyter notebooks.
    """
    patchAsyncio()
    from ipykernel.eventloops import register_integration, enable_gui

    @register_integration('asyncio')
    def loop_asyncio(kernel):
        '''
        Start a kernel with asyncio event loop support.
        '''
        loop = asyncio.get_event_loop()

        def kernel_handler():
            kernel.do_one_iteration()
            loop.call_later(kernel._poll_interval, kernel_handler)

        loop.call_soon(kernel_handler)
        try:
            if not loop.is_running():
                loop.run_forever()
        finally:
            loop.run_until_complete(loop.shutdown_asyncgens())
            loop.close()

    enable_gui('asyncio')
示例#4
0
def startLoop():
    """
    Use asyncio event loop for Jupyter notebooks.
    """
    patchAsyncio()
    from ipykernel.eventloops import register_integration, enable_gui

    register_integration('asyncio')(_ipython_loop_asyncio)
    enable_gui('asyncio')
示例#5
0
def startLoop():
    """
    Use asyncio event loop for Jupyter notebooks.
    """
    patchAsyncio()
    loop = asyncio.get_event_loop()
    if not loop.is_running():
        from ipykernel.eventloops import register_integration, enable_gui
        register_integration('asyncio')(_ipython_loop_asyncio)
        enable_gui('asyncio')
示例#6
0
have_ipython = False
try:
    get_ipython()
    have_ipython = True
except:
    pass

if have_ipython:
    import asyncio
    import itertools
    from ipykernel.eventloops import register_integration, enable_gui

    @register_integration('asyncio')
    def loop_asyncio(kernel):
        '''Start a kernel with asyncio event loop support.'''
        loop = asyncio.get_event_loop()

        def kernel_handler():
            loop.call_soon(kernel.do_one_iteration)
            loop.call_later(kernel._poll_interval, kernel_handler)

        loop.call_soon(kernel_handler)
        try:
            if not loop.is_running():
                loop.run_forever()
        finally:
            loop.close()

    print('[ipyloop] Started event loop')
    enable_gui('asyncio')