отправка задачи в ProcessPoolExecutor не вызывает метод

#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