multiprocessing python

Нужно написать код мультипроцессинга для двух функций, в одной мы вводим значения старта и конца (например 0 5), и вводим имена (Паша Женя Ваня). Вторая функция (set) печатает результат. Аргументы написанные внутри функции, обязательны.
На выходе надо получить следующее:
Паша 0
Женя 1
Ваня 2
Паша 3
Женя 4
Ваня 5

Нужно использовать Process, Lock, Value. Ниже есть код, я смог только реализовать последовательный счетчик для одной функции. Как соединить его с именами и вывести, я не могу понять.

from multiprocessing import Process, Lock,Value

start = Value('I',0)

def set(name,item,iter_stop,lock):
    """
    Prints out the item that was passed in
    """
    with start.get_lock():
      start.value+=1
      print(start.value,name)
def start_g():
  start, game_stop = map(int, input().split()) 
  players = input().split()
  set

if __name__ == '__main__':
    lock = Lock()
    lst=['Паша', 'Женя','Ваня']
    for item in lst:
        p = Process(target=start_g, args=(item, lock))
        p.start()
        p.join()

Еще есть код функции без использования мультипроцессинга.

   def start_game():
        start, game_stop = map(int, input().split()) 
        players = input().split()  
        a=start
        lst=[]
        while a!=game_stop+1:
            for i in players:
                lst.append(i)
                a=a+1
                if a==game_stop+1:
                    break
        for name,current_step in list(zip(lst,range(start,game_stop+1))):
          print(f'{name}: {current_step}')

Ответы (1 шт):

Автор решения: splash58

Вот, держите работающий код. Если неправильно вас понял, допилите

Можете players положить в разделяемый Array

from multiprocessing import Process, Lock,Value

def set(players, value):
    """
    Prints out the item that was passed in
    """
    with value.get_lock():
      print(value.value, players[value.value % len(players)])
      value.value += 1

if __name__ == '__main__':

    # start, game_stop = map(int, input().split())
    start, game_stop = 0, 6
    # players = input().split()
    players = ['Паша', 'Женя','Ваня']
    value = Value('I', start)
    processes = [Process(target=set, args=(players,  value)) for i in range(start, game_stop+1)]
    for process in processes:
        process.start()
    for process in processes:
        process.join()
    for process in processes:
        process.close()
→ Ссылка