Я новичок в python многопоточности, точнее ThreadPoolExecutor, и я здесь, чтобы спросить вас об этом. В настоящее время я работаю с модулем concurrent.futures и застрял в ожидании события. Моя программа go завершает событие ожидания и завершает sh выполнение без вывода окончательных значений каждой возвращаемой функции. Может кто-нибудь объяснить мне, почему, пожалуйста? :)
#!/usr/bin/env python
# module principal utilise concurent.futures pour executer 2 tacheds en parallele
from concurrent.futures import ThreadPoolExecutor
import shutil
import time
import threading
def function_AB():
print("execution A_B")
time.sleep(10)
result_ab = "finish A_B"
resultat_cd = Task_2.result(None)
print(resultat_cd)
return result_ab
def function_CD():
print("execution C_D")
time.sleep(3)
result_cd = "finish C_D"
resultat_ab = Task_1.result()
print(resultat_ab)
return result_cd
def main():
executor = ThreadPoolExecutor(max_workers=2)
#submit = ne ferme pas explictement le pool comparer au with ThreadPoolExecutor() /
# appel non bloquant programme principal traite l'impression de la déclaration immédiatement et se bloque jusqu'à ce que tous les threads aient terminé
Task_1 = executor.submit(function_AB)
Task_2 = executor.submit(function_CD)
print(Task_1)
print(Task_2)
#permet de bloquer les threads jusqu'à la fin de leur exécution
executor.shutdown(wait=True)
if __name__ == "__main__":
start = time.time()
main()
print("Temps execution : {}".format(time.time() - start))