##// END OF EJS Templates
use QSocketNotifier, not poll...
use QSocketNotifier, not poll avoids having to disable App Nap outright. Also use appnope context manager to disable App Nap on OS X 10.9 while processing events. Adds IPKernel._darwin_app_nap flag, so that working with App Nap can be disabled, in case appnope causes problems for some. App Nap is just disabled outright on wx.

File last commit:

r11130:de5468b5
r13583:72366b31
Show More
restarter.py
54 lines | 1.7 KiB | text/x-python | PythonLexer
Brian E. Granger
Adding KerelRestarter.
r10278 """A basic in process kernel monitor with autorestarting.
This watches a kernel's state using KernelManager.is_alive and auto
restarts the kernel if it dies.
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2013 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
Brian Granger
Adding absolute import to kernelrestarter.
r10281 from __future__ import absolute_import
Brian E. Granger
Adding KerelRestarter.
r10278 from zmq.eventloop import ioloop
MinRK
cleanup boundaries of MultiKernelManager and KernelRestarter classes...
r10295 from IPython.kernel.restarter import KernelRestarter
Brian E. Granger
Adding KerelRestarter.
r10278 from IPython.utils.traitlets import (
Thomas Kluyver
Remove unused imports in IPython.kernel
r11130 Instance,
Brian E. Granger
Adding KerelRestarter.
r10278 )
#-----------------------------------------------------------------------------
# Code
#-----------------------------------------------------------------------------
MinRK
cleanup boundaries of MultiKernelManager and KernelRestarter classes...
r10295 class IOLoopKernelRestarter(KernelRestarter):
Brian E. Granger
Adding KerelRestarter.
r10278 """Monitor and autorestart a kernel."""
loop = Instance('zmq.eventloop.ioloop.IOLoop', allow_none=False)
def _loop_default(self):
return ioloop.IOLoop.instance()
Brian Granger
More work on autorestarting.
r10280 _pcallback = None
Brian E. Granger
Adding KerelRestarter.
r10278 def start(self):
Brian Granger
More work on autorestarting.
r10280 """Start the polling of the kernel."""
if self._pcallback is None:
self._pcallback = ioloop.PeriodicCallback(
MinRK
cleanup boundaries of MultiKernelManager and KernelRestarter classes...
r10295 self.poll, 1000*self.time_to_dead, self.loop
Brian Granger
More work on autorestarting.
r10280 )
MinRK
cleanup restart logic...
r10320 self._pcallback.start()
Brian Granger
More work on autorestarting.
r10280
def stop(self):
"""Stop the kernel polling."""
if self._pcallback is not None:
self._pcallback.stop()
MinRK
cleanup restart logic...
r10320 self._pcallback = None
Brian E. Granger
Adding KerelRestarter.
r10278