我正在使用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进程中连接到它。仅在专业版中可用
我最终在没有任何多处理的情况下测试了我的代码
我可以想到两种方法来实现这一目标,但不幸的是,我认为社区版不可能实现。
如果您具有流程的PID,则可以尝试使用“工具”>“附加到流程..”功能附加到流程的PID(我不知道社区版中是否提供该功能)。如果使用a,这将很困难,Pool
因为您不知道将作业分配给哪个进程。
另一种方法是使用远程调试器,并在分派的python进程中连接到它。仅在专业版中可用
我最终在没有任何多处理的情况下测试了我的代码