Параллельные задачи на будущее - PullRequest
0 голосов
/ 15 апреля 2020

В свободное время я работаю над шабером изображений Reddit и одновременно пытаюсь получить изображения из разных подредакторов. Я узнал о параллельной библиотеке фьючерсов и понял, что это можно сделать. Моя проблема в том, что исполнитель ждет, пока одна задача не завершится sh, прежде чем приступить к следующей.

Для начала я установил максимальное количество потоков на 5, как по умолчанию. Я вызываю функцию в другом классе. Код, о котором идет речь:

images = []

for i in range(0, len(pc.subreddits)):
    images.append(RedditImageScraper(reddit, base_folder_path, pc.subreddits[i]))

max_threads = 5
with ThreadPoolExecutor(max_workers=max_threads) as executor:
    future = executor.submit(RedditImageScraper.scrape_images_static, images)
    print(future.result())

Я превратил свой очищающий код в функцию stati c, которая вызывает функцию non-stati c в том же классе для выполнения действия по загрузке изображения.

@staticmethod
    def scrape_images_static(list_of_images):
        for i in range(0, len(list_of_images)):
            list_of_images[i].scrape_images()

В этом коде reddit - это объект, содержащий всю информацию, необходимую для доступа к API Reddits. pc.subreddits[i] - это список субредитов, из которых нужно вычистить. Хотя первоначальная проблема возникла из-за того, что мой reddit объект был одноэлементным. Однако, когда объект не одиночный, я получаю такой же ответ.

Поскольку ничто не является сигналом, новый объект создается в каждом l oop, я не могу понять, почему две задачи выполняются в последовательном порядке, а не одновременно, и я считаю, что они должны.

Я бегу python 3 на Raspberry Pi 4

...