Вызов второго набора многопоточных функций - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть четыре функции, две из которых вызываются для возврата команды, а две другие принимают команду и выполняют другую функцию. Мне нужны функции 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?

...