【问题标题】:Pycharm debugger when using multiprocessing pool使用多处理池时的 Pycharm 调试器
【发布时间】:2021-06-20 05:38:45
【问题描述】:

我的问题出现在这个设置上:

  • Pycharm 2020.3 专业版
  • multiprocessing.Pool
  • Macbook pro 2020 (M1)
  • 康达蟒蛇 3.8

最重要的是,它发生在我使用 pycharm 的调试器时。

在控制台显示8次(进程数):
Error loading: /Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevd_attach_to_process/attach_x86_64.dylib

每个进程都被执行。结果是正确的。我可以用 htop 命令看到它们。所以这只是调试器故障,并不会真正影响代码执行(如果我错了,请纠正我)。

这是我运行的那种代码:

def func(x):
    return x+10


if __name__ == '__main__':
    poo = Pool()
    x = [[i] for i in range(10)]
    res = poo.starmap(func, x)
    print(res)

我现在可以忽略控制台中的大量打印,但这并不方便。如果有人想摆脱那些...

【问题讨论】:

  • 很抱歉,我无法理解您的问题,或者更确切地说是您的问题,您能澄清一下吗?
  • 很抱歉。这些错误是什么意思,我可以做些什么来删除它们?
  • 我无法使用您的代码和 - from multiprocessing.pool import Pool 的导入从我的 pycharm 中重现该错误
  • 你在使用 M1 芯片的 Big Sur 吗?
  • 大苏尔?由于 M1 芯片,我假设您指的是 Mac,然后我的答案是否定的,我使用的是 windows/mint

标签: python macos pycharm multiprocessing conda


【解决方案1】:

这听起来像是 JetBrains 开发人员需要为 M1 解决的问题(考虑 dropping them a bug report)。同时,我怀疑您可以在选项下禁用它:

PyCharm > 首选项 > 构建、执行、部署 > Python 调试器

并取消选中“调试时自动附加到子进程”框。参考the pertinent docs

【讨论】:

    【解决方案2】:

    该错误的解决方案是修改文件 /Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevd_attach_to_process/linux_and_mac/compile_mac.sh 并将所有代码替换为下一个:

    g++ -fPIC -D_REENTRANT -std=c++11 -arch arm64 -c -o attach_x86_64.o attach.cpp
    g++ -dynamiclib -nostartfiles -arch arm64 -o attach_x86_64.dylib attach_x86_64.o -lc
    rm attach_x86_64.o
    mv attach_x86_64.dylib ../attach_x86_64.dylib
    

    然后您可以运行 sh 脚本,它将替换 attach_x86_64.dylib 文件。

    注意。如果您更新 pycharm,此更改将丢失。

    【讨论】:

    • 对我不起作用clang: error: no such file or directory: 'attach.cpp' clang: error: no input files clang: error: no such file or directory: 'attach_x86_64.o'
    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2015-08-27
    • 2018-12-06
    • 2020-02-08
    相关资源
    最近更新 更多