Show More
@@ -134,6 +134,10 b' class ScriptMagics(Magics, Configurable):' | |||
|
134 | 134 | self._generate_script_magics() |
|
135 | 135 | Magics.__init__(self, shell=shell) |
|
136 | 136 | self.job_manager = BackgroundJobManager() |
|
137 | self.bg_processes = [] | |
|
138 | ||
|
139 | def __del__(self): | |
|
140 | self.kill_bg_processes() | |
|
137 | 141 | |
|
138 | 142 | def _generate_script_magics(self): |
|
139 | 143 | cell_magics = self.magics['cell'] |
@@ -196,6 +200,7 b' class ScriptMagics(Magics, Configurable):' | |||
|
196 | 200 | |
|
197 | 201 | cell = cell.encode('utf8', 'replace') |
|
198 | 202 | if args.bg: |
|
203 | self.bg_processes.append(p) | |
|
199 | 204 | if args.out: |
|
200 | 205 | self.shell.user_ns[args.out] = p.stdout |
|
201 | 206 | if args.err: |
@@ -245,3 +250,26 b' class ScriptMagics(Magics, Configurable):' | |||
|
245 | 250 | p.stdin.write(cell) |
|
246 | 251 | p.stdin.close() |
|
247 | 252 | p.wait() |
|
253 | ||
|
254 | def kill_bg_processes(self): | |
|
255 | """Kill all BG processes which are still running.""" | |
|
256 | for p in self.bg_processes: | |
|
257 | if p.poll() is None: | |
|
258 | try: | |
|
259 | p.send_signal(signal.SIGINT) | |
|
260 | except: | |
|
261 | pass | |
|
262 | time.sleep(0.1) | |
|
263 | for p in self.bg_processes: | |
|
264 | if p.poll() is None: | |
|
265 | try: | |
|
266 | p.terminate() | |
|
267 | except: | |
|
268 | pass | |
|
269 | time.sleep(0.1) | |
|
270 | for p in self.bg_processes: | |
|
271 | if p.poll() is None: | |
|
272 | try: | |
|
273 | p.kill() | |
|
274 | except: | |
|
275 | pass |
General Comments 0
You need to be logged in to leave comments.
Login now