【问题标题】:Python - Multiprocessing - Process - Error - after migrationPython - 多处理 - 进程 - 错误 - 迁移后
【发布时间】:2022-11-22 19:15:15
【问题描述】:

该代码在我的 Fedora 37 WS (16C - 32Th) - Python 3.11.0 上运行良好,将其移至 Ubuntu 22.04 Server (12C - 24Th) - Python 3.11.0 并收到以下错误: (https://i.stack.imgur.com/K21PM.png)

我检查了这些文件是否真的在回购协议中,它们确实在,但我不断遇到这些崩溃,正如我在我的 Fedora WS 上所说的那样工作得很好,我按原样移动整个回购协议,现在给我错误。

可能是什么问题,是 Ubuntu 问题,还是它管理进程的方式?可能是 CPU 问题,在 SV 上我有一个 i9 7920x,在 WS 上有一个 r9 5950x。 如果程序需要的线程多于系统拥有的线程,系统会崩溃吗?通常我认为不会,因为操作系统会抢占它们。

产生问题的代码:

   for x in newInElem:  
      p = Process(target=CompareVCF, args=['db/IN/'+x+'.vcf','db/IN/'+x+'.db', 'db/REF/'+x+'.db', 'OUTPUT/Matched/'+x+'.vcf', 'OUTPUT/Unmatched/'+x+'.vcf', x])
      if __name__ == "__main__":
         p.start() # start thread
         processes.append(p) 

   for th in processes: 
      p.join()

谢谢!!!

【问题讨论】:

  • 我建议使用堆栈溢出约定正确格式化问题。例如,将代码放在代码块中,输入图像描述等。
  • 谢谢!我对 SO 很陌生

标签: python ubuntu process multiprocessing fedora


【解决方案1】:

您的脚本可以使用的线程数不一定取决于您的 CPU 硬件的直接能力。

如果您使用的是 Linux,请尝试使用 this 看看您可以使用多少。 other one 应该返回您的机器可用的总数。

查看堆栈跟踪,我可以看到您有一个不存在的文件错误: '/db/IN/2s0..vcf'

扩展名前的 2 个额外点可能是由于您的一个系统上缺少文件引起的,如果它是由第 3 方库安装的,或者作为构建过程的一部分生成的。

在两个系统上手动检查文件是否存在。

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2018-11-03
    相关资源
    最近更新 更多