У меня есть четыре функции, две из которых вызываются для возврата команды, а две другие принимают команду и выполняют другую функцию. Мне нужны функции 1 и 2 и 3 и 4 для одновременного запуска (ie, 1 и 2 одновременно, затем 3 и 4 одновременно). В настоящее время я использую потоки и модули очереди, чтобы запустить первые две функции многопоточности.
Мой код выглядит следующим образом:
import queue as q
import threading
def function_1(queue,var):
*do something*
queue.put(value_1)
def function_2(queue,var):
*do something*
queue.put(value_2)
def function_3(value):
*do something w/ value*
def function_4(value):
*do something w/ value*
queue_1 = q.Queue()
thread_1 = threading.Thread(target=function_1, args = (queue_1, int)
queue_2 = q.Queue()
thread_2 = threading.Thread(target=function_2, args = (queue_2, int)
thread_1.start()
thread_2.start()
thread_1.join()
thread_2.join()
value_1 = queue_1.get()
value_2 = queue_2.get()
Теперь мне нужно передать value_1
и value_2
в function_3
и function_4
соответственно (также необходимо, чтобы они выполнялись как можно ближе одновременно, насколько это возможно), но мне не нужно ничего возвращать из этих функций. Так что я могу просто позвонить
thread_3 = threading.Thread(target=function_3,args=(value_1)
thread_4 = threading.Thread(target=function_4,args=(value_2)
thread_3.start()
thread_4.start()
thread_3.join()
thread_4.join()
Это может показаться простым вопросом, но я думаю, что я в основном запутался в том, что на самом деле происходит внутри компьютера. Есть ли что-то, что мне нужно знать о том, что происходит с thread_1
и thread_2
, как только они будут завершены, прежде чем вызывать новые темы для function_3
и function_4
?