VSCode利用SSH远程调试python代码multiprocessing报错

背景

通过VSCode中的Remote-SSH远程连接Linux进行调试pytorch代码,在读入数据时总是显示线程已经启动,导致代码无法运行。

现象

E00037.671: Exception escaped from start_client
            
            Traceback (most recent call last):
              File "/home/gzz/.vscode-server/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/log.py", line 110, in g
                return f(*args, **kwargs)
              File "/home/gzz/.vscode-server/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/pydevd_hooks.py", line 74, in start_client
                sock, start_session = daemon.start_client((host, port))
              File "/home/gzz/.vscode-server/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/daemon.py", line 214, in start_client
                with self.started():
              File "/media/hdd/yike/anaconda3/envs/pytorch-netvlad/lib/python3.6/contextlib.py", line 81, in __enter__
                return next(self.gen)
              File "/home/gzz/.vscode-server/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/daemon.py", line 110, in started
                self.start()
              File "/home/gzz/.vscode-server/extensions/ms-python.python-2019.9.34911/pythonFiles/lib/python/ptvsd/daemon.py", line 145, in start
                raise RuntimeError('already started')
            RuntimeError: already started
            
Traceback (most recent call last):

Error in atexit._run_exitfuncs:
Error in atexit._run_exitfuncs:
Traceback (most recent call last):

原因

Visual Studio Code自身的bug,对多线程兼容不好,希望能在以后的版本中解决这个问题。

解决办法

在使用多线程之前,添加如下代码:

import multiprocessing
multiprocessing.set_start_method('spawn',True)

但还是出现了如下错误

OMP: Error #13: Assertion failure at z_Linux_util.cpp(2361).
OMP: Hint Please submit a bug report with this message, compile and run commands used, and machine configuration info including native compiler and operating system versions. Faster response will be obtained by including all program sources. For information on submitting this issue, please see http://www.intel.com/software/products/support/.
/media/hdd/yike/anaconda3/envs/pytorch-netvlad/lib/python3.6/multiprocessing/semaphore_tracker.py:143: UserWarning: semaphore_tracker: There appear to be 26 leaked semaphores to clean up at shutdown
  len(cache))

发现这个问题是由于intel-openmp版本太新造成的bug,通过重新安装intel-openmp=2019.4即可解决。

conda install -y intel-openmp=2019.4

你可能感兴趣的:(VS,Code)