В Python на Windows, как я могу определить текущий идентификатор процесса с помощью WMI или pywin32? - PullRequest
0 голосов
/ 05 августа 2020

На Windows, используя библиотеку WMI , я могу получить список запущенных Python программ, подобных этой

c = wmi.WMI()
for process in c.Win32_Process(name="python.exe"):
    print(process.ProcessId, process.Name)

Пример вывода:

21084 python.exe
10184 python.exe
12320 python.exe

Как я могу узнать какие из этих процессов это текущий скрипт ?

Я пытаюсь использовать процесс .Terminate () во всех остальных запущенных скриптах Python, потому что иногда скрипт Python, запущенный GUI, не закрывается. Но я не хочу убивать скрипт, выполняющий очистку, поэтому мне нужен способ его идентифицировать.

1 Ответ

1 голос
/ 05 августа 2020

Простой способ - использовать для этого модуль os:

import os, wmi
c = wmi.WMI()
for process in c.Win32_Process(name="python.exe"):
    print(process.ProcessId, process.Name)
print("current processId:", os.getpid())

Также вы можете использовать win32api из pywin32:

print("current processId:", win32api.GetCurrentProcessId())

Я также запускаю другой сценарий на моем P C, это дало мне:

17944 python.exe
10676 python.exe
current processId: 10676
...