Lista todos os scripts Python em execução

def running_python_scripts():
for p in psutil.process_iter():
if not p.cmdline: continue
if not os.path.basename(p.cmdline[0]).startswith('python'):
continue
try: cwd = p.getcwd()
except psutil._error.AccessDenied: continue
for n, arg in enumerate(p.cmdline[1:]):
if arg == '--':
if len(p.cmdline) > n+1 and p.cmdline[n+1] != '-':
path
= p.cmdline[n+1]
yield os.path.normpath(os.path.join(cwd, path))
break
if arg in ('-c', '-m', '-'): break
if arg.startswith('-'): continue
yield os.path.normpath(os.path.join(cwd, arg))
break

Este é um gerador simples que será usado psutilpara obter uma lista dos scripts Python em execução, retornados como caminhos absolutos. Ele tenta (provavelmente corretamente) analisar a linha de comando de invocação do Python.

Considerará “binários python” qualquer executável que corresponda python*. Irá pular qualquer processo que não consiga obter o CWD (provavelmente captura apenas os processos do mesmo usuário, ou todos se você executá-lo como root)