Android 为什么这个for循环要求这么高?
目前,这两个字典的长度约为35个键:值对 我一直在用这个函数把两个玩家的分数相加,然后打印出结果。然而,在我的笔记本电脑上计算需要几秒钟,在安卓手机上则需要几分钟。为什么这要求这么高 注释掉的方法同样慢 代码中是否存在严重的无效性 提前谢谢你 编辑我通过cProfiler运行了这个方法Android 为什么这个for循环要求这么高?,android,python,python-2.7,for-loop,kivy,Android,Python,Python 2.7,For Loop,Kivy,目前,这两个字典的长度约为35个键:值对 我一直在用这个函数把两个玩家的分数相加,然后打印出结果。然而,在我的笔记本电脑上计算需要几秒钟,在安卓手机上则需要几分钟。为什么这要求这么高 注释掉的方法同样慢 代码中是否存在严重的无效性 提前谢谢你 编辑我通过cProfiler运行了这个方法 def number_add(self, *args):#not tested yet if len(self.player1dict) == len(self.imported_ideas) and
def number_add(self, *args):#not tested yet
if len(self.player1dict) == len(self.imported_ideas) and len(self.player2dict) == len(self.imported_ideas):
self.debug.text = 'Your Results:'
self.scrollview.clear_widgets()
self.scrollview.add_widget(self.answer_label)
for i in self.imported_ideas:
self.totalsdict[i] = self.player1dict[i] + self.player2dict[i]
for i in self.totalsdict:
if self.totalsdict[i] == 20:
self.array_ans.append('You scored 20/20 for: ' + i)
elif self.totalsdict[i] >14:
self.array_ans.append('You scored very highly for: ' + i)
elif self.player1dict[i] > 5 and self.player2dict[i] >5 or self.totalsdict[i] >= 13:
self.array_ans.append('You scored highly for: ' + i)
else:
pass
'''for i in self.player1dict:
if (self.player1dict[i] + self.player2dict[i])== 20:
self.array_ans.append('You scored 20/20 for: ' + i)
elif (self.player1dict[i] + self.player2dict[i]) >14:
self.array_ans.append('You scored very highly for: ' + i)
elif self.player1dict[i] > 5 and self.player2dict[i] >5 or (self.player1dict[i] + self.player2dict[i]) >= 13:
self.array_ans.append('You scored highly for: ' + i)
else:
pass'''
else:
self.debug.text = 'error, dictionary lengths not right'
self.answer_label.text = "\n".join(self.array_ans) #a better method for presenting ideas
self.answer_label.height=(self.r+10)*self.answer_label.font_size
ncalls tottime percall cumtime percall文件名:lineno(函数)
1 0.000 0.000 0.000 0.000 :1()
2 0.000 0.000 0.000 0.000初始值:478(_set_text)
5 0.000 0.000 0.000 0.000时钟。py:243(呼叫)
2 0.000 0.000 0.000 0.000阻尼涡旋。py:93(on_值)
2 0.000 0.000 0.000 0.000标签。py:163(\u触发器\u纹理\u更新)
5000.000 000 000.000 000 000 lang.py:1324(延迟呼叫)
1 0.000 0.000 0.000 0.000主管道。管道:201(编号\u添加)
4 0.000 0.000 0.000 0.000 scrollview.py:212(_get_vbar)
4 0.000 0.000 0.000 0.000 scrollview.py:239(\u get\u hbar)
1 0.000 0.000 0.000 0.000 scrollview.py:380(设置视口大小)
2 0.000 0.000 0.000 0.000 scrollview.py:383(在视口中)
2 0.000 0.000 0.000 0.000 scrollview.py:446(_update_effect_widget)
2 0.000 0.000 0.000 0.000 scrollview.py:452(_update_effect_x_bounds)
2 0.000 0.000 0.000 0.000 scrollview.py:459(_update_effect_y_bounds)
2 0.000 0.000 0.000 0.000 scrollview.py:466(_update_effect_bounds)
2 0.000 0.000 0.000 0.000 scrollview.py:485(更新效果)
1 0.000 0.000 0.000 0.000 scrollview.py:766(添加小部件)
1 0.000 0.000 0.000 0.000 scrollview.py:777(删除_小部件)
8 0.000 0.000 0.000 0.000小部件。py:204(_eq__;)
1 0.000 0.000 0.000 0.000小部件。py:212(\uuuuu self\uuuu)
1 0.000 0.000 0.000 0.000小部件。py:316(添加小部件)
1 0.000 0.000 0.000 0.000小部件。py:373(删除_小部件)
1 0.000 0.000 0.000 0.000小部件。py:392(清除小部件)
1 0.000 0.000 0.000 0.000小部件。py:539(获取顶部)
1 0.000 0.000 0.000 0.000小部件。py:552(获取中心)
2 0.000 0.000 0.000 0.000小部件。py:564(获取中心)
9 0.000 0.000 0.000 0.000{isinstance}
4 0.000 0.000 0.000 0.000{len}
1 0.000 0.000 0.000 0.000{“kivy.graphics.instructions.Canvas”对象的方法“add”}
10 0.000 0.000 0.000 0.000{“列表”对象的“附加”方法}
2 0.000 0.000 0.000 0.000{kivy.\u event.EventDispatcher'对象的方法'bind'
1 0.000 0.000 0.000 0.000{方法'disable'的''lsprof.Profiler'对象}
1 0.000 0.000 0.000 0.000{“str”对象的方法“join”}
1 0.000 0.000 0.000 0.000{方法'remove'of'kivy.graphics.instructions.Canvas'objects}
您是否有代码查看瓶颈在哪里?调用此函数时是否更改了词典?您知道问题是与应用程序逻辑还是与小部件有关吗?
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 <string>:1(<module>)
2 0.000 0.000 0.000 0.000 __init__.py:478(_set_text)
5 0.000 0.000 0.000 0.000 clock.py:243(__call__)
2 0.000 0.000 0.000 0.000 dampedscroll.py:93(on_value)
2 0.000 0.000 0.000 0.000 label.py:163(_trigger_texture_update)
5 0.000 0.000 0.000 0.000 lang.py:1324(delayed_call_fn)
1 0.000 0.000 0.000 0.000 main.py:201(number_add)
4 0.000 0.000 0.000 0.000 scrollview.py:212(_get_vbar)
4 0.000 0.000 0.000 0.000 scrollview.py:239(_get_hbar)
1 0.000 0.000 0.000 0.000 scrollview.py:380(_set_viewport_size)
2 0.000 0.000 0.000 0.000 scrollview.py:383(on__viewport)
2 0.000 0.000 0.000 0.000 scrollview.py:446(_update_effect_widget)
2 0.000 0.000 0.000 0.000 scrollview.py:452(_update_effect_x_bounds)
2 0.000 0.000 0.000 0.000 scrollview.py:459(_update_effect_y_bounds)
2 0.000 0.000 0.000 0.000 scrollview.py:466(_update_effect_bounds)
2 0.000 0.000 0.000 0.000 scrollview.py:485(_update_effect_y)
1 0.000 0.000 0.000 0.000 scrollview.py:766(add_widget)
1 0.000 0.000 0.000 0.000 scrollview.py:777(remove_widget)
8 0.000 0.000 0.000 0.000 widget.py:204(__eq__)
1 0.000 0.000 0.000 0.000 widget.py:212(__self__)
1 0.000 0.000 0.000 0.000 widget.py:316(add_widget)
1 0.000 0.000 0.000 0.000 widget.py:373(remove_widget)
1 0.000 0.000 0.000 0.000 widget.py:392(clear_widgets)
1 0.000 0.000 0.000 0.000 widget.py:539(get_top)
1 0.000 0.000 0.000 0.000 widget.py:552(get_center_x)
2 0.000 0.000 0.000 0.000 widget.py:564(get_center_y)
9 0.000 0.000 0.000 0.000 {isinstance}
4 0.000 0.000 0.000 0.000 {len}
1 0.000 0.000 0.000 0.000 {method 'add' of 'kivy.graphics.instructions.Canvas' objects}
10 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects}
2 0.000 0.000 0.000 0.000 {method 'bind' of 'kivy._event.EventDispatcher' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
1 0.000 0.000 0.000 0.000 {method 'join' of 'str' objects}
1 0.000 0.000 0.000 0.000 {method 'remove' of 'kivy.graphics.instructions.Canvas' objects}