Закрытие и открытие процессов по "Горячей клавише"
Я написал пример кода. Проверь пожалуйста его ниже:
from time import sleep
def o1():
while True:
print("Я 1, работаю : )")
sleep(1)
def o2():
while True:
print("Я 2, работаю : )")
sleep(1)
if __name__=="__main__":
import multiprocessing
p1 = multiprocessing.Process(target=o1)
p2 = multiprocessing.Process(target=o2)
p1.start()
p2.start()
def close():
print("Закрываю o1")
p1.join() #процесс в итоге не закрывается
def start():
print("Запускаю o1")
try: #можно ли сделать как-то красивее?
p1.start()
except AssertionError:
print("Процесс не закрыт")
import keyboard
keyboard.add_hotkey('q', close)
keyboard.add_hotkey('e', start) #после нажатия q, ничего не происходит попытавшись нажать "е"
Мне нужно закрывать процесс и снова его открывать по горячей клавише. (я сделал два процесса в коде, так как это полностью отражает программу в которой мне нужна эта функция)
Заранее спасибо : )
Ответы (1 шт):
Автор решения: userpy
→ Ссылка
procs.py
from time import sleep
def o1():
while True:
print("1 : )")
sleep(1)
def o2():
while True:
print("2 : )")
sleep(1)
main.py
from procs import *
if __name__ == "__main__":
import multiprocessing
p1 = multiprocessing.Process(target=o1)
p2 = multiprocessing.Process(target=o2)
p1.start()
p2.start()
def close():
print("close o1")
p1.terminate()
def start():
global p1
if p1.is_alive():
return
print("start o1")
p1 = multiprocessing.Process(target=o1)
p1.start()
import keyboard
keyboard.add_hotkey('q', close)
keyboard.add_hotkey('e', start)