Многопоточность Python: как я могу разделить очередь аргументов между уже существующими рабочими объектами?Python

Программы на Python
Anonymous
Многопоточность Python: как я могу разделить очередь аргументов между уже существующими рабочими объектами?

Сообщение Anonymous »

У меня есть 5 рабочих («процессоров»), которые должны обрабатывать 100 аргументов (возможно, в какой-то очереди?), используя определенный метод (

Код: Выделить всё

process()). Я хочу, чтобы 5 «процессоров» выполнялись параллельно. Я повторно искал как concurrent.futures
, так и multiprocessing, но не нашел ни одного подобного примера

Код: Выделить всё

import time
import numpy as np

class Processor :

def __init__(self, name) :
self.name = name

def process(self, arg) :
print(f'{name} : processing {arg}...')
time.sleep(arg)

l_processors = [Processor(f'Processor_{i}') for i in range(5)]
l_arguments = list(range(100))
np.random.shuffle(l_arguments)

# ... what to write beyond this point ?
Есть идеи?
Заранее спасибо за любой ответ.
PS:
  • Мне нужно использовать эти 5 объектов процессора, я не могу использовать уже готовый «ProcessorPool(n_workers=5)»
  • Я не хочу заранее назначать каждому рабочему «Процессору» список аргументов. Я не могу знать заранее, сколько времени займет каждый аргумент (с точки зрения времени). Вместо этого, когда рабочий освобождается, он должен просмотреть очередь аргументов и выбрать следующий.


Подробнее здесь: https://stackoverflow.com/questions/785 ... eady-exist

Вернуться в «Python»