Python中文
首页
教程
问答
标签
搜索
登录
注册
字符串长列表的迭代优化
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>下面的代码片段大约在18秒内执行。<code>EdgeList</code>估计长度为330K。有没有办法优化它,考虑到我叫它多次。你知道吗</p> <p>我尝试过优化我的<code>MeanspeedDict</code>中的插入。但我想这已经是最好的了?你知道吗</p> <pre><code> EdgeList = traci.edge.getIDList() #Returns a list of Strings for edge in EdgeList: meanspeed = traci.edge.getLastStepMeanSpeed(edge) #returns a float value ''' if edge in MeanspeedDict: MeanspeedDict[edge].append(meanspeed) MeanspeedDict[edge] = MeanspeedDict[edge][-300:] #Only keep the last 300 values else: MeanspeedDict[edge] = [meanspeed] ''' try: MeanspeedDict[edge].append(meanspeed) MeanspeedDict[edge] = MeanspeedDict[edge][-300:] #Only keep the last 300 values except KeyError: MeanspeedDict[edge] = [meanspeed] </code></pre> <p>配置文件数据符合要求。运行11次</p> <pre><code> 252229348 function calls in 295.056 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 295.056 295.056 <string>:1(<module>) 1 0.000 0.000 40.158 40.158 __init__.py:101(getVersion) 1 0.000 0.000 4.908 4.908 __init__.py:105(close) 1 0.000 0.000 0.000 0.000 __init__.py:111(switch) 1 0.000 0.000 0.507 0.507 __init__.py:45(connect) 1 0.000 0.000 0.000 0.000 __init__.py:49(normalize_encoding) 1 0.000 0.000 40.665 40.665 __init__.py:64(init) 1 0.000 0.000 0.008 0.008 __init__.py:71(search_function) 11 0.000 0.000 1.646 0.150 __init__.py:92(simulationStep) 3607912 2.785 0.000 221.939 0.000 _edge.py:151(getLastStepMeanSpeed) 1 0.000 0.000 0.000 0.000 codecs.py:92(__new__) 3607923 5.689 0.000 16.796 0.000 connection.py:119(_beginMessage) 3607923 3.451 0.000 210.529 0.000 connection.py:128(_sendReadOneStringCmd) 3607923 8.231 0.000 190.282 0.000 connection.py:152(_checkResult) 11 0.000 0.000 1.646 0.150 connection.py:254(simulationStep) 1 0.000 0.000 40.158 40.158 connection.py:273(getVersion) 1 0.000 0.000 4.908 4.908 connection.py:285(close) 1 0.000 0.000 0.507 0.507 connection.py:48(__init__) 3607923 4.167 0.000 8.645 0.000 connection.py:64(_packString) 3607936 19.808 0.000 108.622 0.000 connection.py:72(_recvExact) 3607936 19.507 0.000 200.505 0.000 connection.py:91(_sendExact) 15 0.000 0.000 0.000 0.000 copy.py:123(_copy_inst) 15 0.000 0.000 0.000 0.000 copy.py:66(copy) 15 0.000 0.000 0.000 0.000 domain.py:108(_setConnection) 3607923 4.273 0.000 236.643 0.000 domain.py:111(_getUniversal) 11 0.004 0.000 17.493 1.590 domain.py:116(getIDList) 15 0.000 0.000 0.000 0.000 domain.py:37(__init__) 495 0.000 0.000 0.000 0.000 domain.py:47(reset) 15 0.000 0.000 0.000 0.000 domain.py:99(_register) 1 0.000 0.000 0.000 0.000 latin_1.py:13(Codec) 1 0.000 0.000 0.000 0.000 latin_1.py:20(IncrementalEncoder) 1 0.000 0.000 0.000 0.000 latin_1.py:24(IncrementalDecoder) 1 0.000 0.000 0.000 0.000 latin_1.py:28(StreamWriter) 1 0.000 0.000 0.000 0.000 latin_1.py:31(StreamReader) 1 0.000 0.000 0.000 0.000 latin_1.py:34(StreamConverter) 1 0.000 0.000 0.000 0.000 latin_1.py:41(getregentry) 1 0.000 0.000 0.000 0.000 latin_1.py:8(<module>) 1 0.000 0.000 0.000 0.000 six.py:180(find_module) 1 0.000 0.000 0.000 0.000 six.py:184(find_module) 1 0.001 0.001 0.001 0.001 socket.py:189(__init__) 1 0.000 0.000 0.000 0.000 socket.py:196(close) 2 0.000 0.000 0.506 0.253 socket.py:227(meth) 3607936 1.590 0.000 1.590 0.000 storage.py:32(__init__) 39687197 29.658 0.000 39.432 0.000 storage.py:36(read) 12 0.000 0.000 0.000 0.000 storage.py:41(readInt) 3607912 1.564 0.000 5.345 0.000 storage.py:44(readDouble) 3607924 1.712 0.000 5.389 0.000 storage.py:47(readLength) 10823772 17.543 0.000 50.373 0.000 storage.py:53(readString) 11 1.922 0.175 16.496 1.500 storage.py:57(readStringList) 1 0.000 0.000 0.000 0.000 subprocess.py:458(_cleanup) 1 0.000 0.000 0.000 0.000 subprocess.py:578(list2cmdline) 1 0.000 0.000 0.045 0.045 subprocess.py:651(__init__) 1 0.000 0.000 0.000 0.000 subprocess.py:811(_get_handles) 3 0.000 0.000 0.000 0.000 subprocess.py:881(_make_inheritable) 1 0.000 0.000 0.045 0.045 subprocess.py:905(_execute_child) 3 0.000 0.000 0.000 0.000 subprocess.py:946(_close_in_parent) 1 6.670 6.670 295.056 295.056 traciTest_meanspeed.py:45(runTraCI) 1 0.007 0.007 0.007 0.007 {__import__} 39687197 3.728 0.000 3.728 0.000 {_struct.calcsize} 10823795 3.374 0.000 3.374 0.000 {_struct.pack} 43295133 7.225 0.000 7.225 0.000 {_struct.unpack} 1 0.045 0.045 0.045 0.045 {_subprocess.CreateProcess} 3 0.000 0.000 0.000 0.000 {_subprocess.DuplicateHandle} 6 0.000 0.000 0.000 0.000 {_subprocess.GetCurrentProcess} 1 0.000 0.000 0.000 0.000 {_subprocess.GetStdHandle} 4 0.000 0.000 0.000 0.000 {built-in method Close} 1 0.000 0.000 0.000 0.000 {built-in method __new__ of type object at 0x1E22B4F8} 8 0.000 0.000 0.000 0.000 {getattr} 61 0.000 0.000 0.000 0.000 {hasattr} 6 0.000 0.000 0.000 0.000 {isinstance} 32471566 2.246 0.000 2.246 0.000 {len} 3 0.000 0.000 0.000 0.000 {method 'add' of 'set' objects} 10496061 2.479 0.000 2.479 0.000 {method 'append' of 'list' objects} 990 0.000 0.000 0.000 0.000 {method 'clear' of 'dict' objects} 1 0.506 0.506 0.506 0.506 {method 'connect' of '_socket.socket' objects} 10823772 12.557 0.000 12.565 0.000 {method 'decode' of 'str' objects} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 3607923 3.371 0.000 3.371 0.000 {method 'encode' of 'str' objects} 2 0.000 0.000 0.000 0.000 {method 'fileno' of 'file' objects} 17 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects} 2 0.000 0.000 0.000 0.000 {method 'join' of 'str' objects} 7215956 84.503 0.000 84.503 0.000 {method 'recv' of '_socket.socket' objects} 3 0.000 0.000 0.000 0.000 {method 'remove' of 'set' objects} 3607936 46.414 0.000 46.414 0.000 {method 'send' of '_socket.socket' objects} 1 0.000 0.000 0.000 0.000 {method 'setsockopt' of '_socket.socket' objects} 1 0.000 0.000 0.000 0.000 {method 'split' of 'str' objects} 1 0.000 0.000 0.000 0.000 {method 'startswith' of 'str' objects} 1 0.000 0.000 0.000 0.000 {method 'translate' of 'str' objects} 15 0.000 0.000 0.000 0.000 {method 'update' of 'dict' objects} 11 0.000 0.000 0.000 0.000 {method 'values' of 'dict' objects} 2 0.000 0.000 0.000 0.000 {msvcrt.get_osfhandle} 12 0.023 0.002 0.023 0.002 {range} 27 0.000 0.000 0.000 0.000 {setattr} 1 0.000 0.000 0.000 0.000 {sys.exit} 22 0.000 0.000 0.000 0.000 {time.clock} </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>似乎<code>getLastStepMeanSpeed</code>太慢了:</p> <pre><code>3607912 2.785 0.000 221.939 0.000 _edge.py:151(getLastStepMeanSpeed) </code></pre> <p>脚本执行它的时间占75%(221/295)</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
pyVISA GPIB GET(组执行触发器)
6 回答
Pyvisa IOerror设备:Korad K3005d电源
7 回答
PyVISA mac OS X(山狮)安捷伦33250
3 回答
Pyvisa Pyusb无法加载大于1 MB的序列
2 回答
pyVisa RS232太慢
6 回答
PyVISA RS232超时错误(安捷伦电源)
8 回答
PyVISA SCPI命令和查询(值更新问题)
4 回答
PyVISA SerialInstrument需要硬重置才能在故障后连接
6 回答
pyvisa,未找到函数viOpen
4 回答
pyVISA:以编程方式将仪器返回到本地模式
9 回答
pyvisa:接口类型是什么意思?
5 回答
pyvisa.errors.VisaIOError:VI_ERROR_TMO(1073807339):操作完成前超时
10 回答
PyVisa“更复杂的示例”根本不运行Keithley 2400不理解的命令
4 回答
PyVisapy后端
8 回答
PyVISA不能写入超过7F的十六进制字符
8 回答
PYVISA中的ENUM模块和cStringIO模块
10 回答
PyVisa代码的图形用户界面
4 回答
Pyvisa使用按键电源超时
6 回答
PyVISA和Kethley 2701只能从一个通道获取结果
4 回答
PyVisa和Printing New D
2 回答