Смотрите этот пример кода, который использует future.ThreadPoolExecutor
для параллельного выполнения.
from concurrent.futures import ThreadPoolExecutor, Future, as_completed
devices = []
def func1(device, arg1, arg2):
pass
def do_after_func1(func1_result: Future):
identifier = func1_result.arg
result = func1_result.result()
# do what ever
pass
device_executors = ThreadPoolExecutor(max_workers=20)
args = [] # can be anything
futures = []
for device in devices:
tracker = device_executors.submit(func1, *args)
tracker.arg = "some-identififcation-if-you-need"
tracker.add_done_callback(do_after_func1)
futures.append(tracker)
Вы можете отправить что-либо для параллельного выполнения в виде callable
, а результат можно направить в функцию обратного вызова do_after_func1
. Вы можете решить, что будет потом называться здесь. Все это происходит параллельно.
Вы также можете использовать ProcessPoolExecutor
, если считаете, что необходимо несколько процессов.
Вы можете узнать больше из официальной документации.