Не ясно, на каком основании вы выбираете записи из Orders
. Один из вариантов - просто выбрать MIN()
из region
& amp; state
с группой, а затем присоединиться к ней с Person
WITH b AS (
SELECT ticket_number,
MIN(region) AS region,
MIN(state) AS state
FROM orders
GROUP BY ticket_number
) SELECT a.last_name,
a.ticket_number,
b.region,
b.state
FROM person a
JOIN b ON a.ticket_number = b.ticket_number;
Отправка сигнала 0 к pid повысит исключение OSError, если pid не будет работать, и ничего не сделайте иначе.
import os
def check_pid(pid):
""" Check For the existence of a unix pid. """
try:
os.kill(pid, 0)
except OSError:
return False
else:
return True
Посмотрите здесь для особенного метода окон получения полного списка выполнения процессов с их идентификаторами. Это было бы что-то как
from win32com.client import GetObject
def get_proclist():
WMI = GetObject('winmgmts:')
processes = WMI.InstancesOf('Win32_Process')
return [process.Properties_('ProcessID').Value for process in processes]
, можно затем проверить pid, который Вы получаете против этого списка. Я понятия не имею о стоимости производительности, таким образом, необходимо проверить это, если Вы собираетесь сделать изодромную с предварением проверку часто.
Для *ОТКЛОНЯЮТ, просто используют решение mluebke.
Я сказал бы, используют PID для любой цели, Вы получаете его и обрабатываете ошибки корректно. Иначе это - классическая гонка (PID может быть допустимым, когда Вы проверяете, что это допустимо, но уйдите момент спустя)