python - Python 与第二个任务并行运行两个顺序任务,仅从第一个任务中获取最新/最新的返回值
问题描述
在这里,我有两个进程要按顺序执行,比如A
then B
。第一个任务A
为第二个任务输出一个值B
,并且每次运行都需要很少的时间来计算。B
涉及一些复杂的计算,并且需要比 长一个数量级的时间来完成A
。
同时,Task仅在完成其冗长的计算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)
推荐阅读
- .net - 如何获取 CLR 加载的类型列表?
- cypress - 测试失败后继续在 cypress runner 中运行,不会超时
- javascript - OnClick Javascript 滚动到 PHP 重复结果中的 iframe 位置
- java - 如何使用 Hibernate 持久化嵌套对象?
- python-3.6 - Discord Bot Python 2.6(如何通过嵌入造句)
- python - 每次我尝试安装任何软件包时 pip 都会失败
- r - 基于R数据帧之间匹配条件的操作
- javascript - 选择所有
仅包含
内部元素的元素 - wpf - 网格拆分器行为(底部面板关闭时展开顶部面板)
- c# - DataGridView 向导中没有与数据库的连接