首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新变量的Python异步调用

更新变量的Python异步调用
EN

Stack Overflow用户
提问于 2022-01-02 13:17:32
回答 2查看 149关注 0票数 0

我有一个函数def act(obs),它返回一个浮点,在计算上非常昂贵(运行起来需要一些时间)。

代码语言:javascript
运行
复制
import time
import random

def act(obs):
    time.sleep(5) # mimic computation time
    action = random.random()
    return action

我经常在脚本中调用这个函数,速度比执行它所需的时间还要快。在调用函数时,我不希望有任何等待时间。相反,我更喜欢使用早期计算中返回的值。我怎样才能做到这一点?

我想到的是有一个在函数中更新的全局变量,我一直在阅读全局变量,尽管我不确定这是否是实现它的最佳方法。

EN

Stack Overflow用户

发布于 2022-01-02 13:46:35

这就是我最后使用的基于this answer

代码语言:javascript
运行
复制
class MyClass:
    def __init__(self):
        self.is_updating = False
        self.result = -1
    
    def _act(self, obs):
        self.is_updating = True
        time.sleep(5)
        self.result = obs
        self.is_updating = False
        
    def act(self, obs):
        if not self.is_updating:
            threading.Thread(target=self._act, args=[obs]).start()
        return self.result

agent = MyClass()

i = 0
while True:
    agent.act(obs=i)
    time.sleep(2)
    print(i, agent.result)
    i += 1
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70556285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档