Как ждать, пока все потоки в поточном методе не будут выполнены в python? - PullRequest
0 голосов
/ 18 октября 2019

Вот сценарий:

class Finder:

    def __foo(self, item):
        sm = Filter(item)
        sm.do_stuff()
        return sm 

    def filter(self):
        pool = ThreadPool(20)
        results = pool.map(self.__foo, [data...])
        pool.close()
        pool.join()
        return results


class Filter:
    def do_stuff(self):
        pool = ThreadPool(20)
        results = pool.map(self.__more_stuff, [more_data...])
        pool.close()
        pool.join()
        return results

    def __more_stuff(self, item):
        for x in range(0, 1000):
            self.info.append(x * 10)

    def get_info(self,):
        return self.info

Наконец я звоню:

x = Finder()
data = x.filter()
for y inf data:
    do_something_with_data <-- Here I get the main problem!

- - Проблема - -

Есть лиспособ подождать, пока все потоки внутри классов «Filter» закончатся, прежде чем закрывать и присоединять потоки в классе «Finder»? Когда я пытаюсь добраться до информации, хранящейся в списке 'info', я получаю сообщение об ошибке, поскольку иногда процессы внутри класса Filter еще не завершены

...