Python与第二个任务并行运行两个顺序任务,仅从第一个任务中获取最新/最新的返回值



在这里,我有两个过程要连续执行,例如 A,然后是 B。第一个任务A输出了第二个任务B的值,并且计算每个运行的时间很少。B涉及一些复杂的计算,并且要比A花费的时间更长。

同时,任务B仅在完成冗长的计算时才从A获取最新的返回值。问题在于,我不想等待B完成,以便A拾取其下一个值,换句话说,A需要不断生成其值。在Python中实现此功能的正确和方便的方法是什么?

模拟任务AB

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)

以下工作适合您吗?

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)

最新更新