Как избежать завершения процесса из-за Event в модуле multiprocessing?

Как переписать данную программу, чтобы процесс продолжал работать после вызова метода `event.set()` без завершения?
  • 18 марта 2024 г. 21:49
Ответы на вопрос 2
Для того чтобы избежать завершения процесса из-за Event в модуле multiprocessing, можно использовать механизм цикла while для проверки состояния Event'а перед каждой итерацией цикла. Если Event в состоянии "установлен", процесс может продолжать работу, иначе процесс может перейти в режим ожидания.

Пример переписанной программы:

```python
import multiprocessing
import time

def my_func(event):
    while not event.is_set():
        print("Working...")
        time.sleep(1)
    print("Event is set!")

if __name__ == '__main__':
    event = multiprocessing.Event()
    process = multiprocessing.Process(target=my_func, args=(event,))
    process.start()

    time.sleep(5)  # Ждем 5 секунд перед установкой Event'а
    event.set()  # Устанавливаем Event

    process.join()  # Ждем завершения процесса
```

Теперь процесс будет продолжать работать после вызова метода `event.set()` без завершения.
добавить while True перед e.wait() 
Только надо после принта делать e.clear(), иначе он постоянно будет печатать, т.к. ивент перешёл в сет
Похожие вопросы