python в vscode - не удается заставить многопроцессорную работу работать - PullRequest
0 голосов
/ 18 марта 2020

Я не новичок в Python, но довольно плохо знаком с работой с многопроцессорностью в Python. Я предпочитаю работать в vscode, но он работает очень странно, когда я пытаюсь запустить простой пример многопроцессорной обработки.

Я использую Python 3.7.2 и VSCode версии 1.43.0 на Windows.

Вот мои файлы. Сначала вызывающий:

## 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 ...>

Вот запуск по умолчанию. json файл, который я использую:

{
    // 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"
        }
    ]
}

Есть ли способ заставить это работать в VSCode?

1 Ответ

0 голосов
/ 18 марта 2020

Вы получаете общедоступную версию Pycharm, которая поможет вам без проблем настроить VS Code -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...