在这里,我有两个过程要连续执行,例如 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)
以下工作适合您吗?
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)