#python-3.x #concurrent.futures
Вопрос:
В моем приложении python есть ProcessPoolExecutor, и я отправляю методы класса в качестве задач исполнителю.
from concurrent.futures import ProcessPoolExecutor # In other module file class MyClass: def __init__(self): def run(self, secondsToSleep): print("start running...") time.sleep(secondsToSleep) # In main file def main(): obj = MyClass() with ProcessPoolExecutor(max_workers=5) as executor: future = executor.submit(obj.run, (10, )) executor.shutdown(wait=True)
«Начать работать…» никогда не вызывается. Если я выполняю процессы grep python3, я вижу, что было создано несколько процессов.
Я изменил печать на ведение журнала файлов, но изменений не произошло.
Комментарии:
1. Почему вы проходите 10 в кортеже? Эта часть не работает. Попробуйте вместо этого просто:
future = executor.submit(obj.run, 10)
. Кроме того, вы никогда не звонитеmain()
, чтобы то, что вы опубликовали, никогда ничего не запускало.2. Я попробовал
future = executor.submit(obj.run, 10)
и вызвал основной метод на самом деле, но никакой разницы.3. Это работает для меня (Ubuntu 20.04 LTS) в python 3.9