python - 有没有一种方法可以在python中对dict执行测试和设置操作?

标签 python multithreading dictionary

我有一个多线程应用程序,在其中我需要使用全局指令来记住和处理请求。

问题是,我不应该两次执行相同的请求,因此我需要使用字典才能测试 key 是否存在。如果不是,请插入它,如果是,则报告错误。

所有代码都在python中运行,因此GIL不应该相关。

在python中可行吗?

在这里锁定将起作用,但是我试图找到一种更自然的方法来解决它。

最佳答案

您当然可以创建一个字典并在线程之间共享它,但是您应该使用锁保护对字典的每次访问(无论是读取还是写入)。

Here lock would work but I am trying to find a more natural way to solve it.



同步原语(例如锁)的使用是实现涉及并发性的可靠体系结构的自然方法。

话虽如此,可以在各个级别上确保不重复两次发出某个请求。如果使用上述字典进行操作,则需要在执行请求之前插入标识符。伪代码:
with lock.acquire():
    if url in d:
        return # do not perform request
    d.[url] = True

perform_request(url)

如果请求失败,您可能想要再次从dict中删除 key (当然,不是没有获得锁)。

关于python - 有没有一种方法可以在python中对dict执行测试和设置操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412522/

相关文章:

python - 如何获取pandas数据框中所有最小值的索引?

python - 运行docker镜像提供-无法找到镜像错误

c++ - 套接字发送(..)线程的最佳数量

python - Pandas DataFrame 中的字典嵌套列表

Python 正则表达式 - 匹配、比较和决定

python - 如何可视化 tensorflow 分类的特征?

.net - 从第二线程在UI线程中打开表单

swift - 如何检查多个并发线程何时完成?

python - 从 Python 中的几个列表构建字典列表

python - 根据 Python 中的另一个列表对字典列表进行排序