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

RapidFuzz 3.9.6多进程模式(workers≠1)触发致命错误求助

问题描述

在使用RapidFuzz 3.9.6版本时,调用process.cdist并设置workers≠1启用多进程加速字符串比较时,会触发致命错误,错误码为-1073741819(0xC0000005)。该问题在3.5.2版本中不存在。可复现的测试代码如下:

import rapidfuzz
from rapidfuzz import process

print(rapidfuzz.__version__)

process.cdist(['tree'], ['beer'], workers=1)
process.cdist(['tree'], ['beer'], workers=2)

注:已在RapidFuzz官方仓库提交Issue #403。

问题成因与修复方案

成因分析

错误码0xC0000005是Windows系统下的**访问违规(Access Violation)**错误,核心原因是程序尝试访问未授权的内存区域。结合版本差异判断,这是RapidFuzz 3.5.2到3.9.6版本间的多进程模块更新引入的内存管理bug,可能的具体场景包括:

  • 多进程间共享内存的处理逻辑存在漏洞
  • 子进程初始化时出现内存越界
  • 与Windows系统的进程调度机制存在兼容性冲突

替代修复方案(除降级外)

  • 改用多线程模式:RapidFuzz的workers参数设置为负数时会启用多线程而非多进程,例如设置workers=-2,既能利用多核资源加速,又可规避多进程带来的内存访问问题。
  • 临时使用单进程:若对性能要求不高,暂时保持workers=1单进程运行,等待官方修复该bug。
  • 显式指定进程启动方式:在Windows系统中,多进程默认启动方式可能引发冲突,可在代码开头显式设置为spawn模式:
import multiprocessing
multiprocessing.set_start_method('spawn')

完成设置后再调用process.cdist,部分场景下可解决内存访问冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:57:08