首页 > 解决方案 > Python 与第二个任务并行运行两个顺序任务,仅从第一个任务中获取最新/最新的返回值

问题描述

在这里,我有两个进程要按顺序执行,比如Athen B。第一个任务A为第二个任务输出一个值B,并且每次运行都需要很少的时间来计算。B涉及一些复杂的计算,并且需要比 长一个数量级的时间来完成A

同时,Task仅在完成其冗长的计算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)

标签: pythonconcurrencymultiprocessing

解决方案


以下内容对您有用吗?

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)

推荐阅读