当前位置:  开发笔记 > 编程语言 > 正文

如何在pycharm中使用多处理时进行调试

如何解决《如何在pycharm中使用多处理时进行调试》经验,为你挑选了1个好方法。

我正在使用pycharm社区版中的anaconda2调试多进程程序.它有几个后台工作进程.在收到任务之前,工作进程将检查输入队列以在不休眠的情况下检索任务.事实上,我只对主要过程感兴趣.但是pycharm调试器总是步入子进程,似乎主进程一直没有工作,而且任务从未发送过.如何使调试器脱离子进程?worker子进程如下所示:

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

小智.. 5

我可以想到两种方法来实现这一目标,但不幸的是,我认为社区版不可能实现。

如果您具有流程的PID,则可以尝试使用“工具”>“附加到流程..”功能附加到流程的PID(我不知道社区版中是否提供该功能)。如果使用a,这将很困难,Pool因为您不知道将作业分配给哪个进程。

另一种方法是使用远程调试器,并在分派的python进程中连接到它。仅在专业版中可用

我最终在没有任何多处理的情况下测试了我的代码



1> 小智..:

我可以想到两种方法来实现这一目标,但不幸的是,我认为社区版不可能实现。

如果您具有流程的PID,则可以尝试使用“工具”>“附加到流程..”功能附加到流程的PID(我不知道社区版中是否提供该功能)。如果使用a,这将很困难,Pool因为您不知道将作业分配给哪个进程。

另一种方法是使用远程调试器,并在分派的python进程中连接到它。仅在专业版中可用

我最终在没有任何多处理的情况下测试了我的代码

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有