对Pi使用Async/Await

2024-09-28 03:15:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉async/await,我遇到了一些困惑。是否应该对pickle进行await编辑?在

例如,假设我有以下async类方法:

async def get(self, key):
    redis = await self.getRedis()
    data = await redis.get(key)
    if not data:
        return None

    return pickle.loads(data)

async def set(self, key, value, ttlInSeconds):
    pickled = pickle.dumps(value)

    redis = await self.getRedis()
    await redis.setex(key, pickled, ttlInSeconds)

如果我正在序列化或取消序列化一个大对象,pickle上的整个循环块是不是?在实际应用中,对于较小的物体,这种瞬间阻塞是否可以接受?谢谢!在


Tags: keyselfredisdatagetasyncreturn序列化
1条回答
网友
1楼 · 发布于 2024-09-28 03:15:22

应该阻止进行pickling,因为如果类中的另一个方法在set()仍在处理pickle.dumps()时执行并修改value,则pickled数据将被损坏。在

即使该对象一次只能有一个实例,也是如此。在

顺便说一句,在get()中,您可以将await放在return pickle.loads(data)中,因为您不太可能修改尚未从该方法返回的数据。在

相关问题 更多 >

    热门问题