Я использую многопроцессорный модуль для запуска задач. Если один из процессов остановлен из-за какого-то исключения, могу ли я запустить новый, чтобы заменить его, а затем убедиться, что общее количество процессов не изменилось.
Если я использую приведенный ниже код, один процесс остановится из-за ошибки преобразования int <> float, тогда фактически будет запущен только один процесс. Большое спасибо.
import multiprocessing
from queue import Empty
import time
import os
def multi_processing():
print("main_process:", os.getpid())
items = ["1", "0.1", "2", "5", "6"]
tasks_queue = multiprocessing.Manager().Queue()
for item in items:
tasks_queue.put(item)
number_of_procs = 2
process_list = list()
for _ in range(number_of_procs):
process = multiprocessing.Process(
target=tasks_from_queue, args=(tasks_queue,)
)
process_list.append(process)
process.start()
for process in process_list:
process.join()
print("Finished task")
def tasks_from_queue(tasks_queue,):
"""
Get tasks to process form queue
"""
while not tasks_queue.empty():
try:
item = tasks_queue.get(block=True, timeout=2)
except Empty:
print("Tasks queue empty")
break
time.sleep(5)
print("sub_process", os.getpid(), "get_item", int(item))
if __name__ == "__main__":
multi_processing()