Хотите знать, если бы вы могли иметь несколько функций в задаче для пула процессов python - PullRequest
0 голосов
/ 16 апреля 2020
def task():
    print("Executing our Task on Process {}".format(os.getpid()))

def main():
    executor = ProcessPoolExecutor(max_workers=3)
    task1 = executor.submit(task)
    task2 = executor.submit(task)

if __name__ == '__main__':
    main()

Итак, я увидел эту программу с этого сайта: https://tutorialedge.net/python/concurrency/python-processpoolexecutor-tutorial/

И мне было просто интересно, если у вас может быть несколько функций в рамках задачи. Например, пул процессов должен выполнять только одну задачу? Потому что у меня есть программа, которая имеет функцию для каждой задачи, и мне интересно, как я могу преобразовать ее в исполнителя пула процессов.

Любая помощь будет принята с благодарностью. Спасибо

1 Ответ

0 голосов
/ 16 апреля 2020

A ProcessPoolExecutor является подклассом Executor. Метод Executor.submit() выглядит следующим образом:

 submit(fn, *args, **kwargs)

Который согласно документации :

Планирует, чтобы вызываемое fn выполнялось как fn (* args ** kwargs) и возвращает объект Future, представляющий выполнение вызываемого объекта.

Так что он должен иметь возможность запускать любой вызываемый - нет никакой связи между Исполнитель и виды задач, которые он может выполнять.

Вот простое расширение предоставленного вами кода, которое вы можете использовать для его тестирования:

def task_one():
    print("Executing our first Task on Process {}".format(os.getpid()))

def task_two():
    print("Executing our second Task on Process {}".format(os.getpid()))

def main():
    executor = ProcessPoolExecutor(max_workers=3)
    executor.submit(task_one).result()
    executor.submit(task_two).result()

if __name__ == '__main__':
    main()
...