使用多处理池时的 Pycharm 调试器

我的问题发生在这个设置上:

  • Pycharm 2020.3 专业版
  • 多处理.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)

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

stack overflow Pycharm debugger when using multiprocessing pool
原文答案

答案:

作者头像

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

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

并取消选中“ Attach to subprocess automatically while debugging ”框。请参阅 the pertinent docs 以供参考。

作者头像

该错误的解决方案是修改文件 /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,此更改将丢失。

作者头像

仅当我将 pycharm 更新为较新版本时,我才在我的 Mac M1 16" (2021) 上遇到了同样的问题。如果您在 Mac M1 笔记本电脑上遇到此问题。请前往笔记本电脑上的这个位置

/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/pydevd_attach_to_process/linux_and_mac/compile_mac.sh

并将这些行与现有行一起添加到 compile_mac.sh 文件中。

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

我发现此链接对解决此问题很有用: youtrack.jetbrains.com