Параллельное выполнение по значениям в списке

Рейтинг: 0Ответов: 0Опубликовано: 05.02.2023
import random
import numpy as np
import time

while True:

    l_gen = [[['a',random.randint(1, 10)],['b',random.randint(1, 11)],['c',random.randint(1, 12)]]
            ,[['d',random.randint(1, 10)],['e',random.randint(1, 11)],['f',random.randint(1, 12)]]
            ,[['j',random.randint(1, 10)],['k',random.randint(1, 11)],['l',random.randint(1, 12)]]
             ]
    l_type_count_1 = []
    l_type_count_2 = []
    for g,er in enumerate(l_gen):

        l_one_element = [a[0] for a in er] # a , b ,c

        #print(l_one_element[g])
        l_comb = []
        l_comb.append(l_one_element)

        z = 0
        while z < 2:
          my_list = np.roll(l_comb[z], 1).tolist()
          l_comb.append(my_list)
          z += 1

        # тип расчётов 1
        #print(l_comb)

        for a in l_comb:  # [['a', 'b', 'c'], ['c', 'a', 'b'], ['b', 'c', 'a']]
            one_value = [b[1] for i,b in enumerate(er) if a[0] == b[0]][0]
            two_value = [b[1] for i, b in enumerate(er) if a[1] == b[0]][0]
            three_value = [b[1] for i, b in enumerate(er) if a[2] == b[0]][0]

            l_type_count_1.append([str(a)+' type_1',(1/one_value) * two_value * three_value])


        # тип расчётов 2


        for a in l_comb:  # [['a', 'b', 'c'], ['c', 'a', 'b'], ['b', 'c', 'a']]
            one_value = [b[1] for i, b in enumerate(er) if a[0] == b[0]][0]  # ограничил l_gen a b c
            two_value = [b[1] for i, b in enumerate(er) if a[1] == b[0]][0]  # ограничил l_gen a b c
            three_value = [b[1] for i, b in enumerate(er) if a[2] == b[0]][0]  # ограничил l_gen a b c

            l_type_count_2.append([str(a)+' type_2',(1/one_value) * (1/two_value) * three_value])


    print(l_type_count_1)
    print(l_type_count_2)
    time.sleep(2)

Добрый день! Не понимаю, как сделать параллельное выполнение по значениям в списке l_gen. Под параллельным выполнением я понимаю следующее: на каждую итерацию "for g,er in enumerate(l_gen):" создать отдельную задачу для async. Погуглив, я нашёл примеры использования async для отправки get запросов, а вот аналогичный пример как у меня- "не последовательное выполнение" нет.

Из l_type_count_1 и l_type_count_2 буду доставать два наибольших значения с названием.

Помогите, пожалуйста, советом...

Ответы

Ответов пока нет.