【发布时间】:2012-12-05 03:15:46
【问题描述】:
我目前正在为班级编写 AI 作业,每次我尝试调试(使用 ipdb 或 pdb)时,pdb 都会立即关闭。该程序将地图作为输入,现在我只是将文本文件输入并从标准输入中获取行。
python value_iteration.py < l_track.txt
这工作正常,但我认为它导致pdb.set_trace() 关闭,有没有办法明确确保标准输入被释放或什么?
当前地图抓取代码段:
def map_input():
...
control_line = sys.stdin.readline().rstrip('\n')
height, width = control_line.split(",")
height = int(height)
width = int(width)
print "Map:"
while row < height:
for line in sys.stdin:
create MDP from states
...
return mdp
然后:
def value_iteration(mdp, epsilon):
....
for state in mdp.states.keys():
print mdp.actions[state]
ipdborpdb.set_trace()
utils_prime[state] = R(state) + gamma * max([
sum([
p * mdp.utilities[ns] for (p, ns) in T(state, a)
]) for a in mdp.actions[state]
])
if abs(utils_prime[state] - mdp.utilities[state]) > delta:
delta = abs(utils_prime[state] - mdp.utilities[state])
...
return mdp with utilities
【问题讨论】:
-
至少告诉我们“pdb.set_trace()”的位置在哪里
-
这是 pdb 问题,尝试阅读:stackoverflow.com/questions/9178751/…
-
是的,我看到了这个问题,问了我自己的问题,因为那个问题没有修复或答案。
-
我认为答案就在那个问题之内:1,更改为其他调试工具; 2、将pdb的io分离到另一个fifo
-
或者我认为最好的方法是直接从文件中读取数据,而不是通过操作系统的管道