You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中多线程并发修改字典唯一键条目是否安全?

问题

我执行如下代码,对字典的操作是否安全?

import threading as thread

def do_operation(operation, results):
    results[operation.unique_name] = operation.get_result()

results = {}
for operation in operations:
    thread.Thread(target=do_operation, args=(operation, results)).run()
解答
  • 你当前写的代码本身不存在线程安全问题:你调用的是Thread.run()方法,该方法会直接在当前主线程同步执行目标函数,并没有启动新的子线程,整个逻辑是串行执行所有操作,对字典的写入完全安全。
  • 如果你是笔误,实际要调用Thread.start()启动多线程并发执行:
    • 仅针对CPython实现来说,单个字典赋值操作results[key] = value是原子操作,只要所有线程写入的operation.unique_name互不重复、且没有其他线程同时对这个字典做删除、遍历、覆盖同一个key的操作,就不会出现字典内部结构损坏、数据写入异常的问题。
    • 上述原子性是CPython的GIL带来的实现细节,不属于Python语言的官方规范,其他Python解释器(如PyPy)不保证该操作的原子性。如果需要跨解释器兼容、或者后续会新增其他字典操作,建议加线程锁保证安全。

内容的提问来源于stack exchange,提问作者rpecka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:15:02