#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()