vscode中的python-can';我不能让多重处理工作
我对Python并不陌生,但对在Python中使用多处理非常陌生。我更喜欢在vscode中工作,但当我尝试运行一个简单的多处理示例时,它的行为非常奇怪 我正在Windows上运行Python 3.7.2和VSCode版本1.43.0 这是我的档案。首先,呼叫方:vscode中的python-can';我不能让多重处理工作,python,visual-studio-code,python-multiprocessing,Python,Visual Studio Code,Python Multiprocessing,我对Python并不陌生,但对在Python中使用多处理非常陌生。我更喜欢在vscode中工作,但当我尝试运行一个简单的多处理示例时,它的行为非常奇怪 我正在Windows上运行Python 3.7.2和VSCode版本1.43.0 这是我的档案。首先,呼叫方: ## multi_runner.py import multiprocessing import multi_worker import time if __name__ == '__main__': print('Star
## multi_runner.py
import multiprocessing
import multi_worker
import time
if __name__ == '__main__':
print('Starting the jobs.')
jobs = []
for i in range(5):
p = multiprocessing.Process(
target=multi_worker.worker
)
jobs.append(p)
p.start()
while any(job.is_alive() for job in jobs):
print('sleeping')
time.sleep(1)
print('All done.')
工人:
## multi_worker.py
import multiprocessing
import sys
def worker():
"""worker function"""
print(f'Worker')
return
当我在命令行上运行此命令时,一切都按照您期望的方式运行:
(venv) C:\multiexample>python multi_runner.py
Starting the jobs.
sleeping
Worker
Worker
Worker
Worker
Worker
All done.
但当我在VSCode调试器中运行它时,它似乎永远不会屈服于工作人员,我必须杀死它来结束它:
(venv) PS C:\multiexample> ${env:PTVSD_LAUNCHER_PORT}='52842'; & 'c:\multiexample\venv\Scripts\python.exe' 'c:\Users\myuser\.vscode\extensions\ms-python.python-2020.2.64397\pythonFiles\lib\python\new_ptvsd\wheels\ptvsd\launcher' 'c:\multiexample\multi_runner.py'
Starting the jobs.
sleeping
sleeping
sleeping
sleeping
sleeping
sleeping
sleeping
sleeping
sleeping
<... forever ...>
有没有办法在VSCode中实现这一点?您可以获得Pycharm的社区版,它将帮助您在配置VS代码时无需麻烦地进行调试–VS代码有很多优点。。对于某些特定任务,请使用Pycharm之类的专用编辑器。请尝试中概述的最新调试器,看看这是否解决了问题。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}