Skip to content

Commit 3502678

Browse files
minrkMeeseeksDev[bot]
authored andcommitted
Backport PR #420: Make closing jupyter client faster
1 parent ed4716e commit 3502678

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

jupyter_client/channels.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import atexit
99
import errno
10-
from threading import Thread
10+
from threading import Thread, Event
1111
import time
1212

1313
import zmq
@@ -73,6 +73,7 @@ def __init__(self, context=None, session=None, address=None):
7373

7474
# running is False until `.start()` is called
7575
self._running = False
76+
self._exit = Event()
7677
# don't start paused
7778
self._pause = False
7879
self.poller = zmq.Poller()
@@ -138,7 +139,7 @@ def run(self):
138139
while self._running:
139140
if self._pause:
140141
# just sleep, and skip the rest of the loop
141-
time.sleep(self.time_to_dead)
142+
self._exit.wait(self.time_to_dead)
142143
continue
143144

144145
since_last_heartbeat = 0.0
@@ -155,7 +156,7 @@ def run(self):
155156
# sleep the remainder of the cycle
156157
remainder = self.time_to_dead - (time.time() - request_time)
157158
if remainder > 0:
158-
time.sleep(remainder)
159+
self._exit.wait(remainder)
159160
continue
160161
else:
161162
# nothing was received within the time limit, signal heart failure
@@ -184,6 +185,7 @@ def is_beating(self):
184185
def stop(self):
185186
"""Stop the channel's event loop and join its thread."""
186187
self._running = False
188+
self._exit.set()
187189
self.join()
188190
self.close()
189191

0 commit comments

Comments
 (0)