Show More
@@ -134,6 +134,10 b' class ScriptMagics(Magics, Configurable):' | |||||
134 | self._generate_script_magics() |
|
134 | self._generate_script_magics() | |
135 | Magics.__init__(self, shell=shell) |
|
135 | Magics.__init__(self, shell=shell) | |
136 | self.job_manager = BackgroundJobManager() |
|
136 | self.job_manager = BackgroundJobManager() | |
|
137 | self.bg_processes = [] | |||
|
138 | ||||
|
139 | def __del__(self): | |||
|
140 | self.kill_bg_processes() | |||
137 |
|
141 | |||
138 | def _generate_script_magics(self): |
|
142 | def _generate_script_magics(self): | |
139 | cell_magics = self.magics['cell'] |
|
143 | cell_magics = self.magics['cell'] | |
@@ -196,6 +200,7 b' class ScriptMagics(Magics, Configurable):' | |||||
196 |
|
200 | |||
197 | cell = cell.encode('utf8', 'replace') |
|
201 | cell = cell.encode('utf8', 'replace') | |
198 | if args.bg: |
|
202 | if args.bg: | |
|
203 | self.bg_processes.append(p) | |||
199 | if args.out: |
|
204 | if args.out: | |
200 | self.shell.user_ns[args.out] = p.stdout |
|
205 | self.shell.user_ns[args.out] = p.stdout | |
201 | if args.err: |
|
206 | if args.err: | |
@@ -245,3 +250,26 b' class ScriptMagics(Magics, Configurable):' | |||||
245 | p.stdin.write(cell) |
|
250 | p.stdin.write(cell) | |
246 | p.stdin.close() |
|
251 | p.stdin.close() | |
247 | p.wait() |
|
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