醉卧看星空 2021-04-23 10:38 采纳率: 0%
浏览 173

Building module cython_nms failed

运行python多进程程序的时候,遇到了如下问题,调用cython_nms.pyx文件时报错,而在单进程下程序可以正常运行,请问怎么解决?

ImportError: Building module utils.cython_nms failed: ['ImportError: DLL load failed: 系统找不到指定的文件。\n']
 

  • 写回答

1条回答 默认 最新

  • 数字花园笔记 2023-04-26 23:07
    关注

    这个错误可能是由于在多进程中,Python解释器在运行时无法正确找到所需的动态链接库(DLL)文件,导致cython_nms.pyx文件无法被正确编译。这可能是由于多进程环境中Python解释器的一些限制导致的。
    您可以尝试以下方法来解决这个问题:

    1. 将cython_nms.pyx文件单独编译成一个Python扩展模块,并在多进程程序中直接导入该模块。这样可以避免在多进程中动态编译模块的过程,从而减少可能出现的错误。
    2. 在多进程程序中,将cython_nms.pyx文件编译成一个静态链接库(或动态链接库),并在多进程程序中显式地加载该库。这样可以确保所有进程都可以正确访问所需的库文件。
    3. 在多进程程序中,使用Python的"fork"模式启动子进程。这种模式下,子进程会继承父进程的所有资源,包括Python解释器和所有已经加载的动态链接库。这样可以避免在子进程中重新加载动态链接库的过程,从而减少可能出现的错误。
      如果您使用的是Python的multiprocessing模块来启动多进程,您可以尝试将"spawn"模式改为"fork"模式来解决这个问题。例如:
      import multiprocessing as mp
      if __name__ == '__main__':
       mp.set_start_method('fork')
       # 启动多进程...
      
      请注意,将"spawn"模式改为"fork"模式可能会导致一些兼容性问题。
    评论

报告相同问题?

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教