Python выполняет две последовательные задачи параллельно со второй задачей, получая только последнее / новейшее возвращаемое значение из первой - PullRequest
0 голосов
/ 07 июля 2019

Здесь у меня есть два процесса для последовательного выполнения, скажем A, затем B. Первая задача A выводит значение для второй задачи B, и вычисление каждого прогона занимает мало времени. B включает в себя некоторые сложные вычисления и занимает на порядок больше времени, чем A.

Между тем, Задача B извлекает самое новое возвращаемое значение из A только после завершения длинных вычислений. Проблема в том, что я не хочу ждать окончания работы B, чтобы A смог получить следующее значение, другими словами, A необходимо постоянно генерировать его значение. Как правильно и целесообразно реализовать эту функцию в Python?

Имитация задачи A и B:

some_random_value = 0

def a():
    global some_random_value
    while True:
        some_random_value = random.randint(1,100)
        time.sleep(0.01) # fast
        return some_random_value

def b(some_random_value):
    while True:
        time.sleep(2) # slow
        print(some_random_value+1)

1 Ответ

0 голосов
/ 07 июля 2019

Будет ли работать следующее для вас?

lock = Lock()
some_random_value = 0

def a():
    global some_random_value
    while True:
        with lock.Lock():
            some_random_value = random.randint(1,100)
        time.sleep(0.01) # fast

def b():
    global some_random_value
    while True:
        time.sleep(2) # slow
        with lock.Lock():
            print(some_random_value+1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...