##// END OF EJS Templates
Use check_pid from utils in IPython.parallel
Thomas Kluyver -
Show More
@@ -36,6 +36,7 b' from IPython.core.application import ('
36 base_flags as base_ip_flags
36 base_flags as base_ip_flags
37 )
37 )
38 from IPython.utils.path import expand_path
38 from IPython.utils.path import expand_path
39 from IPython.utils.process import check_pid
39 from IPython.utils import py3compat
40 from IPython.utils import py3compat
40 from IPython.utils.py3compat import unicode_type
41 from IPython.utils.py3compat import unicode_type
41
42
@@ -249,28 +250,11 b' class BaseParallelApplication(BaseIPythonApplication):'
249 raise PIDFileError('pid file not found: %s' % pid_file)
250 raise PIDFileError('pid file not found: %s' % pid_file)
250
251
251 def check_pid(self, pid):
252 def check_pid(self, pid):
252 if os.name == 'nt':
253 try:
253 try:
254 return check_pid(pid)
254 import ctypes
255 except Exception:
255 # returns 0 if no such process (of ours) exists
256 self.log.warn(
256 # positive int otherwise
257 "Could not determine whether pid %i is running. "
257 p = ctypes.windll.kernel32.OpenProcess(1,0,pid)
258 " Making the likely assumption that it is."%pid
258 except Exception:
259 )
259 self.log.warn(
260 return True
260 "Could not determine whether pid %i is running via `OpenProcess`. "
261 " Making the likely assumption that it is."%pid
262 )
263 return True
264 return bool(p)
265 else:
266 try:
267 p = Popen(['ps','x'], stdout=PIPE, stderr=PIPE)
268 output,_ = p.communicate()
269 except OSError:
270 self.log.warn(
271 "Could not determine whether pid %i is running via `ps x`. "
272 " Making the likely assumption that it is."%pid
273 )
274 return True
275 pids = list(map(int, re.findall(br'^\W*\d+', output, re.MULTILINE)))
276 return pid in pids
General Comments 0
You need to be logged in to leave comments. Login now