Python中文
首页
教程
问答
标签
搜索
登录
注册
减少函数调用
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我分析了python程序,发现下面的函数运行时间太长。也许,我可以用另一种算法,让它运行得更快。但是,我读过,我也可以通过减少函数调用来提高速度,特别是当它在循环中被反复调用时。我是一个python新手,想学习如何做到这一点,看看它能有多快。目前的功能是:</p> <pre><code>def potentialActualBuyers(setOfPeople,theCar,price): count=0 for person in setOfPeople: if person.getUtility(theCar) >= price and person.periodCarPurchased==None: count += 1 return count </code></pre> <p>其中<code>setOfPeople</code>是<code>person</code>对象的列表。我尝试了以下方法:</p> ^{pr2}$ <p>但是,这给了我一个错误,说<code>local variable 'person' referenced before assignment</code> 有什么建议,我如何减少函数调用或任何其他可以使代码更快的更改。在</p> <p>同样,我是一个python新手,尽管我可能能够使用更好的算法,但是仍然值得学习上面问题的答案。在</p> <p>非常感谢。在</p> <p>*****编辑*****</p> <p>添加<code>getUtility</code>方法:</p> <pre><code> def getUtility(self,theCar): if theCar in self.utility.keys(): return self.utility[theCar] else: self.utility[theCar]=self.A*(math.pow(theCar.mpg,self.alpha))*(math.pow(theCar.hp,self.beta))*(math.pow(theCar.pc,self.gamma)) </code></pre> <p>返回自我效用[车]</p> <p>编辑:征求新想法</p> <p>有什么办法让这个速度进一步加快吗。我用亚历克斯建议的方法把时间缩短了一半。我能再快点吗? 谢谢。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>方法只是绑定到对象的函数:</p> <pre><code> Utility = Person.getUtility for person in setOfPeople: if Utility(person, theCar) ... </code></pre> <p>但这并不能消除函数调用,它消除了属性查找。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
VirtualEnvRapper错误:路径python2(来自python=python2)不存在
9 回答
virtualenvs上的pyinstaller,没有名为导入错误的模块
1 回答
virtualenvs是否可以退回到用户包而不是系统包?
1 回答
virtualenvwrapper CentOS7
7 回答
virtualenvwrapper IOError:[Errno 13]权限被拒绝
8 回答
virtualenvwrapper mkproject和shell在windows中的启动问题?
9 回答
virtualenvwrapper mkvirtualenv不工作但没有错误
6 回答
Virtualenvwrapper python bash
5 回答
virtualenvwrapper:“workon”何时更改到项目目录?
6 回答
virtualenvwrapper:mkvirtualenv可以工作,但是rmvirtualenv返回bash:没有这样的文件或目录
8 回答
virtualenvwrapper:virtualenv信息存储在哪里?
9 回答
virtualenvwrapper:命令“python设置.pyegg_info“失败,错误代码为1
10 回答
virtualenvwrapper:如何将mkvirtualenv的默认Python版本/路径更改为ins
4 回答
Virtualenvwrapper:模块“pkg_resources”没有属性“iter_entry_points”
3 回答
Virtualenvwrapper:没有名为virtualenvwrapp的模块
5 回答
Virtualenvwrapper.bash_profi的正确设置
8 回答
Virtualenvwrapper.hook:权限被拒绝
4 回答
virtualenvwrapper.sh:fork:资源暂时不可用Python/Djang
3 回答
Virtualenvwrapper.shlssitepackages命令不工作
5 回答
Virtualenvwrapper.sh函数在bash sh中不可用
6 回答