我正在 pycharm 社区版中使用 anaconda2 调试多进程程序。
它有几个后台工作进程。工作进程将检查输入队列以检索任务,而不会休眠,直到收到任务。事实上,我只对主要流程感兴趣。但是pycharm调试器总是单步进入子进程,看起来主进程一直没有工作,并且任务从未发送出去。如何使调试器脱离子进程?
工作子进程如下所示:
class ILSVRC_worker:
...
def run(self):
cfg_parser = ConfigParser.ConfigParser()
cfg_parser.read(self.cfg_path)
data_factory = ILSVRC_DataFactory(cfg_parser)
logger = mp.log_to_stderr(logging.INFO)
while True:
try:
annotation_path = self.que_in.get(True,0.1)
except Queue.Empty:
continue
if annotation_path is None:
# to exit the subprocess
logger.info('exit the worker process')
break
...
我可以想到两种方法来实现这一目标,但不幸的是我认为社区版不可能实现这一点。
- 如果您有进程的 PID,您可以尝试使用“工具”>“附加到进程..”功能来附加该进程(我不知道社区版中是否提供该功能)。如果您使用
Pool
因为你不知道该作业被分配给哪个进程。
- 另一种方法是使用远程调试器并在分派的 python 进程中连接到它。此功能仅在专业版中可用
我最终在没有任何多重处理的情况下测试了我的代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)