(Python) запускать процесс только после запуска другого процесса - PullRequest
0 голосов
/ 11 марта 2020

Учитывая функцию create_vm, которая описана ниже, я пытаюсь создать n виртуальных машин (ВМ) параллельно.

Что я хочу сделать, это запустить n вызовов виртуальной машины по порядку, но хотите, чтобы виртуальные машины создавались параллельно; (i + 1) ^ -ый вызов создания виртуальной машины отправляется только после того, как будет отправлен i-й вызов создания виртуальной машины. Но процесс создания (i + 1) ^ -ой виртуальной машины не блокируется процессом создания i-й виртуальной машины.

Я решил использовать модуль многопроцессорной обработки и отправлять вызовы создания виртуальной машины в В порядке, я сначала создал процессы, используя понимание списка. Но довольно часто виртуальные машины создаются не в том порядке, в котором я даю им индексы, которые обозначаются переменной vm_index в приведенном ниже коде.

Как мне достичь вышеуказанной цели?

Спасибо!

# create_vm is a function to send Microsoft Azure virutal machine creation call
processes = [Process(target=create_vm, args=(vm_index, 
                                                 resource_group_name, 
                                                 vm_image, 
                                                 vm_size, 
                                                 vm_creation_time_dict))
             for vm_index in range(Q)]
for p in processes:
    p.start()

for p in processes:
    p.join()
...