Ответ 1
Как отметил Петр, PyCharm "Привязать к подпроцессу автоматически при отладке". Если подпроцессом является процесс Python, отладчик PyCharm изменяет параметры запуска процесса (см. Функцию patch_args
в источнике). Когда вы запускаете подпроцесс таким образом:
args = ['python',
'-m', 'pycharm-multiprocess-debug',
'worker']
worker = subprocess.Popen(args)
Фактическая команда запуска выглядит следующим образом:
python.exe -m "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 4.0.3\helpers\pydev\pydevd.py"
--multiproc --client 127.0.0.1 --port 62661
--file pycharm-multiprocess-debug
Итак, все пошло не так. Я могу найти несколько обходных решений:
-
Самый простой способ, если вам не нужно отлаживать подпроцесс, просто отключите "Приложить к подпроцессу автоматически при отладке" внутри настроек PyCharm
-
измените свои аргументы на:
args = ['python', '__main__.py', 'worker']
Недостатком является то, что вы можете запускать только файл Python, а не модуль Python.
-
Я рекомендую последнее решение для подпроцесса Python:
from multiprocessing import Process def server(): p = Process(target=worker) p.start() print 'worker pid: {}'.format(p.pid) p.join()