【发布时间】:2017-12-25 09:47:47
【问题描述】:
我正在尝试使用 pudb 进行多处理调试,但遇到如下错误:
代码:
def worker():
i = 0
while i < 10:
pudb.set_trace()
i = i + 1
time.sleep(1)
if __name__ == '__main__':
p1 = multiprocessing.Process(target=worker)
p1.start()
错误:
File "/usr/local/lib/python2.7/dist-packages/urwid/raw_display.py", line 545, in _getch
return ord(os.read(self._term_input_file.fileno(), 1))
TypeError: ord() expected a character, but string of length 0 found
有人知道这个问题吗?
【问题讨论】:
-
我不熟悉 pudb 但我认为正在发生的事情是 pudb.set_trace() 仅停止主进程,因此其他进程继续不间断并导致错误。也许有一种方法可以配置 pudb 以停止所有工作进程,但如果没有,我会考虑尝试将其作为单个进程进行调试(关闭多处理)。
-
感谢 kshikama,多处理工作人员没有任何附加到标准输入,所以没有交互式调试器,我必须对多进程使用远程调试
-
我已经更新了解决方法