微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 中的自定义对象对于只读操作是线程安全的吗?

如何解决Python 中的自定义对象对于只读操作是线程安全的吗?

我有一个 json 加载的字典列表,代表一个相对较小的数据库(约 1k 个文档),用于只读操作。

我知道 Python 原生数据结构本质上是线程安全的,但是如果我创建自己的类来查询这些数据呢?

为了提供一点上下文,我的目标是通过点表示法(使用 SimpleNamespace)启用对 dict 键的访问,并实现一组有用的方法查询数据。例如:

import json
from types import SimpleNamespace

data = json.load(open("my_file"))
data = {f"_{n}":d for n,d in enumerate(data)} # converting the list in a dict indexed by subsequent ints

class MyData:

    # unpacking the dictionary and the nested ones into SimpleNamespace
    my_data = SimpleNamespace(
          **{k: v if not isinstance(v,dict) else SimpleNamespace(**v) for k,v in data.items()}
    )
    
    @classmethod
    def distinct(cls,attr):
        # method similar to collection.distinct() of mongoDB client

在大量并发访问(涉及我的类的数千个异步调用)的情况下,我应该期待什么?所有访问都是为了阅读目的,所以不应该担心竞争条件。

为了完整起见,我不使用实际数据库的原因是我想将服务器-客户端通信减少到最低限度,因为我还必须处理受所有 CRUD 约束的其他数据库操作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。