python - 将 Async/Await 与 Pickle 结合使用

标签 python python-3.x asynchronous async-await python-3.5

我是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 上阻塞吗?出于实际目的,对于较小的物体,这种短暂的阻塞可以接受吗?谢谢!

最佳答案

应该阻止酸洗,因为如果您的类中的另一个方法可以在set()仍在处理时执行并修改valuepickle.dumps(),pickle 的数据将会损坏。

即使该对象一次肯定只有一个实例,这一点也适用。

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

关于python - 将 Async/Await 与 Pickle 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44358705/

相关文章:

python - 如何将字符串读入字典列表?

python - 如何有效地从多个 DataFrame 中获取单元格值以插入主 DataFrame

python - 对 CSV 文件的每一列求和

javascript - 服务器创建后 Python SocketIO 发出事件

python - 通过字典将函数传递给 thread.start_new_thread

Python多个类调用特定类时出错

c# - 如何防止我的异步方法阻塞 UI?

python - Matplotlib 随着时间的推移绘制旧点消失的点

javascript - 如何处理程序的异步执行?

Javascript - 等待数组完成填充