Size: a a a

2020 August 19

DA

Dmitry Alimov in SPb Python
pid_list.append(str(proc.pid))  # <<< тут добавляются строки

if pid not in pid_list:  # <<< тогда тут надо тоже str(pid)
источник

A

Anti in SPb Python
Хм
источник

A

Anti in SPb Python
Не совсем понимаю
источник

A

Anti in SPb Python
Dmitry Alimov
pid_list.append(str(proc.pid))  # <<< тут добавляются строки

if pid not in pid_list:  # <<< тогда тут надо тоже str(pid)
Почему
источник

DA

Dmitry Alimov in SPb Python
не нужно приводить pid к строке.
источник

DA

Dmitry Alimov in SPb Python
просто добавляй их в pid_list
источник

DA

Dmitry Alimov in SPb Python
    if pid not in pid_list:
       proc = sp.Popen(['python', 'main.py', argument], shell=True)
       pid = proc.pid  # <<< или тут уж добавить str(...)
источник

A

Anti in SPb Python
Не помогает
источник

A

Anti in SPb Python
Боже у меня так голова от этого дерьма болит
источник

DA

Dmitry Alimov in SPb Python
так. короче добавь proc.wait() после запуска
источник

A

Anti in SPb Python
И что оно даст?
источник

DA

Dmitry Alimov in SPb Python
если порождённый процесс будет завершен, то это не оставит его висеть как зомби
источник

A

Anti in SPb Python
Где именно это вставить надо
источник

A

Anti in SPb Python

import psutil
import subprocess as sp
import time

pid_list = []
pid = ''
argument = '...'
proc = sp.Popen(['python', 'main.py', argument], shell=True)
pid = str(proc.pid)
time.sleep(3) # <-- There no time.wait, but time.sleep.
while True:
   time.sleep(2)
   print(pid)
   for proc in psutil.process_iter():
       pid_list.append(str(proc.pid))
   print(pid_list)
   if pid not in pid_list:
       proc = sp.Popen(['python', 'main.py', argument], shell=True)
       pid = proc.pid
   else:
       pass
   pid_list.clear()
источник

DA

Dmitry Alimov in SPb Python
сразу после proc = ...
источник

A

Anti in SPb Python
И что должно произойти?
источник

A

Anti in SPb Python
Не совсем понимаб
источник

DA

Dmitry Alimov in SPb Python
а вообще код можно вообще упростить
import subprocess as sp

while True:
   proc = sp.Popen(['python', 'main.py'], shell=True)
   print(proc.pid)
   proc.wait()
источник

DA

Dmitry Alimov in SPb Python
если нужно только чтобы дочерний процесс всегда перезапускался.
источник

p

pragus in SPb Python
Dmitry Alimov
а вообще код можно вообще упростить
import subprocess as sp

while True:
   proc = sp.Popen(['python', 'main.py'], shell=True)
   print(proc.pid)
   proc.wait()
а можно просто испрользовать супервизоры и лок )
источник