LINUX.ORG.RU

Возможно ли из ProcessPoolExecutor получить список выполняющихся задач и задач в очереди?

 ,


0

2
from concurrent.futures import ProcessPoolExecutor

executor = ProcessPoolExecutor(max_workers=90)

def worker(p):
    #много кода
dataset = [................................................] #большой список

for data in dataset:
    future = executor.submit(worker, data)



Как в таком коде узнать какие задачи в произвольный момент времени выполняются, а какие в очереди?
Если это невозможно для ProcessPoolExecutor , если какой-то вариант многопроцессности, с которым это возможно и который также поддерживает ограничение количества процессов?

★★★★★
Ответ на: комментарий от gvtlor

Сделал так:

from concurrent.futures import ProcessPoolExecutor
from time import sleep

executor = ProcessPoolExecutor(max_workers=2)

def worker2(p):
    sleep(5)
    print(p)


dataset = ['a', 'b', 'c', 'd', 'e', 'f']

for data in dataset:
    future = executor.submit(worker2, data)


while True:
    items = executor._pending_work_items
    items = list(items.values())

    itemset = []
    for item in items:
        itemset.append([item.args[0], item.fn.__name__])
    print(itemset)
    sleep(1)

Qwentor ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.