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

Android Kotlin通过Chaquopy运行AudioCompare脚本遇多进程相关错误

解决Chaquopy运行AudioCompare的多进程相关错误

问题根源

Android系统不支持sem_open系统调用,导致原生multiprocessing模块无法正常初始化,抛出OSError;切换到multiprocessing.dummy(线程模拟多进程)后,由于该模块未实现cpu_count方法,AudioCompare代码调用该方法时触发AttributeError。

解决方案

方案1:给multiprocessing.dummy补充cpu_count实现

在你的Python入口脚本(比如main.py)的最顶部添加以下代码,要在导入AudioCompare或任何依赖multiprocessing的模块之前执行:

import os
import multiprocessing.dummy as multiprocessing

# 给dummy模块添加cpu_count方法,复用os模块的实现
multiprocessing.cpu_count = lambda: os.cpu_count() or 1

这样AudioCompare调用multiprocessing.cpu_count()时,会使用我们补充的逻辑,返回设备的CPU核心数(或默认1)。

方案2:直接修改AudioCompare的Matcher.py代码

找到Matcher.py中调用multiprocessing.cpu_count()的代码块,将其替换为基于os模块的实现:
原代码(示例):

import multiprocessing
worker_count = multiprocessing.cpu_count()

修改为:

import os
worker_count = os.cpu_count() or 1

同时将Matcher.py中的import multiprocessing替换为import multiprocessing.dummy as multiprocessing,确保用线程池替代进程池。

额外注意事项

  • multiprocessing.dummy是线程级别的模拟,所有线程共享同一内存空间,若AudioCompare中存在进程间通信逻辑(如Pipe、Queue),dummy版本的对应组件是线程安全的,无需额外修改。
  • 如果AudioCompare还依赖其他多进程特有的API(如Process类的某些属性),需要逐一替换为dummy模块的对应实现,或调整为线程兼容的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:27:27