Потоки Python запускаются один за другим и получают возвращаемое значение?

#python #multithreading #concurrent.futures

Вопрос:

В Python я использовал потоковую обработку и библиотеку concurrent.futures. Хотя я могу создать свой список с помощью потоковой передачи, я не могу сделать это с помощью параллельного. В параллельном режиме я могу получить возвращаемое значение, но не в потоковом режиме.

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

Пожалуйста, покажите мне, как получить как возвращаемые значения, так и запускать потоки один за другим из списка. Спасибо за примеры программ, которые я пробовал.

 import time
from concurrent.futures import ThreadPoolExecutor, as_completed
import threading

def a(a=1, b=2):
    print(a)
    time.sleep(5)
    print(b)
    return a b

def b(**kwargs):
    if "a" in kwargs:
        print("am b")
    else:
        print("nothing")
        
to_do=[]
executor = ThreadPoolExecutor(max_workers=4)
ex1=executor.submit(a)
to_do.append(ex1)
ex2=executor.submit(b, **{"a":1})
to_do.append(ex2)

for future in as_completed(to_do):
    print("Future {} and Future Return is {}n".format(future, future.result()))

print("threading")

to_do=[]
to_do.append(threading.Thread(target=a))
to_do.append(threading.Thread(target=b, kwargs={"a":1}))

for threads in to_do:
    threads.start()
for threads in to_do:
    threads.join()