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

如何在Python中使用多线程查找二维数组的最小值

问题原因
  • 没有做最小值对比逻辑:你的代码中每个线程直接把当前行的最小值覆盖全局存储的minThreads['minThreads'],没有和已有的全局最小值做比较,最终结果由最后执行完成的线程决定,你当前测试用例中处理第三行[5,6]的线程最后运行结束,所以输出为5。
  • 没有等待所有线程执行完成:主线程启动所有子线程后没有调用join()等待子线程全部执行完毕,直接读取全局变量结果,即使逻辑正确也可能出现提前读值的错误。
  • 冗余参数未使用:函数定义的**total参数没有实际用到,直接操作全局变量,虽然字典是可变对象不影响运行,但属于无效代码。
正确实现方法

我们可以通过线程锁保证全局最小值更新的原子性,同时增加最小值对比逻辑,并且等待所有线程执行完成后再读取结果,示例代码如下:

import threading
matrix = [[1, 2],[3, 4],[5, 6]]
# 初始化全局最小值为无穷大
global_min = {"value": float('inf')}
lock = threading.Lock()

def calc_row_min(row_idx):
    # 计算当前行的最小值
    current_min = min(matrix[row_idx])
    # 加锁保证更新全局变量的原子性
    with lock:
        if current_min < global_min["value"]:
            global_min["value"] = current_min

threads = []
for i in range(len(matrix)):
    t = threading.Thread(target=calc_row_min, args=(i,))
    threads.append(t)
    t.start()

# 等待所有线程执行完成
for t in threads:
    t.join()

print(global_min["value"])

运行上述代码会正确输出最小值1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:24:06