mirror of
https://github.com/vale981/emacs-jupyter
synced 2025-03-06 16:01:37 -05:00
Cleanup dead kernel processes when starting new ones
* jupyter-kernel-process-manager.el (jupyter--kernel-processes): New variable. (jupyter--gc-kernel-processes): New function. (jupyter--start-kernel-process): Use them.
This commit is contained in:
parent
eafbc9f967
commit
3fed81216e
1 changed files with 14 additions and 0 deletions
|
@ -31,6 +31,11 @@
|
|||
(require 'jupyter-kernelspec)
|
||||
(eval-when-compile (require 'subr-x))
|
||||
|
||||
(defvar jupyter--kernel-processes '()
|
||||
"The list of kernel processes launched.
|
||||
This list is periodically cleaned up when a new process is
|
||||
launched and when Emacs exits.")
|
||||
|
||||
;;; `jupyter-kernel-process'
|
||||
|
||||
(defclass jupyter--kernel-process (jupyter--kernel)
|
||||
|
@ -48,6 +53,13 @@ kernel starts.")
|
|||
(and (slot-boundp kernel 'process)
|
||||
(process-live-p (oref kernel process))))
|
||||
|
||||
(defun jupyter--gc-kernel-processes ()
|
||||
(setq jupyter--kernel-processes
|
||||
(cl-loop for p in jupyter--kernel-processes
|
||||
if (process-live-p p) collect p
|
||||
and when (buffer-live-p (process-buffer p))
|
||||
do (kill-buffer (process-buffer p)))))
|
||||
|
||||
(defun jupyter--start-kernel-process (name kernelspec conn-file)
|
||||
(let* ((process-name (format "jupyter-kernel-%s" name))
|
||||
(buffer-name (format " *jupyter-kernel[%s]*" name))
|
||||
|
@ -85,6 +97,8 @@ kernel starts.")
|
|||
;; any messages we send it.
|
||||
(or (null attribs)
|
||||
(not (equal atime (nth 4 attribs)))))))
|
||||
(jupyter--gc-kernel-processes)
|
||||
(push process jupyter--kernel-processes)
|
||||
process))
|
||||
|
||||
(defun jupyter--kernel-died-process-sentinel (kernel)
|
||||
|
|
Loading…
Add table
Reference in a new issue