Многопроцессорность. Проверка завершения процесса в другом процессе в классе Python

есть код, в котором 2 функции и запускаются 2 процесса. Нужно во 2 процессе проверить работает ли 1 процесс.

from multiprocessing import Process, current_process
import time
class all_start():
    def __init__(self):
        pass
    def initial(self):
        p1 = Process(name='Worker 1', target=self.f1)
        p2 = Process(name='Worker 2', target=self.f2)

        p1.start()
        p2.start()

    def f2(self):
        print('%s start working' % current_process().name)
        #####################################
        if p1.is_alive(): #вот тут ошибка, потому что он не понимает что такое p1
            print('Процесс 1 еще работает')
        #####################################
        print('%s finish working' % current_process().name)
    def f1(self):
        print('%s start working' % current_process().name)
        time.sleep(2)
        print('%s finish working' % current_process().name)
if __name__ == '__main__':
    start1 = all_start()
    start1.initial()

Проблема в том, что я не знаю как сделать так, чтобы во 2 процессе проверить завершился ли 1 процесс (оба процесса должны стартовать вместе). Как это возможно сделать?

Была идея сделать из f1 и f2 одну функцию, поставить на неё Lock, if добавить, но это костыли и будет выглядеть некрасиво.


Ответы (0 шт):