Посмотрите на фрагмент кода ниже.В функции main
я создаю массив jobs
.Projects
- это массив, содержащий несколько project
объектов.Эти project
объекты также содержат несколько target
объектов.Для каждой цели я хочу выполнить четыре разные функции.Для этого я запускаю Process
, указывая на функцию run
.Я добавляю Process
к массиву и запускаю его.Текущий фрагмент кода создаст процессы зомби, которых я стараюсь избегать.
def main():
jobs = []
for project in projects:
for target in project.getTargets():
p = multiprocessing.Process(target=run, args=(target.getX(),
target.getY(),))
jobs.append(p)
p.start()
for job in jobs:
job.join()
def run(x, y):
a(x, y)
b(x, y)
c(x, y)
d(x, y)
Цель состоит в том, чтобы обрабатывать ок.пять целей параллельно, а затем используйте механизм, такой как FIFO, для обработки новой цели, как только другая цель будет завершена.