导航:首页 > 编程语言 > python函数耗时

python函数耗时

发布时间:2024-07-27 04:43:10

⑴ 濡备綍瀹炵幇python骞跺彂钖屾椂澶勭悊100涓钥楁椂璇锋眰锛

瑕佸疄鐜癋astAPI骞跺彂钖屾椂澶勭悊100涓钥楁椂璇锋眰锛屽彲浠ュ熷姪寮傛ョ紪绋嫔拰澶氱嚎绋嬬殑鎶链銆

鍦‵astAPI涓锛屽彲浠ヤ娇鐢≒ython镄勫岗绋嫔簱asyncio𨱒ュ疄鐜板纾姝ョ紪绋嬨傞氲繃浣跨敤async鍜宎wait鍏抽敭瀛楋纴鍙浠ュ畾涔夊纾姝ュ嚱鏁帮纴浣垮缑璇锋眰鍙浠ュ湪绛夊緟钥楁椂镎崭綔镄勫悓镞跺勭悊鍏朵粬璇锋眰銆

钖屾椂锛屽彲浠ヤ娇鐢ㄥ氱嚎绋嬫潵澧炲姞骞跺彂澶勭悊鑳藉姏銆侾ython鎻愪緵浜唗hreading妯″潡𨱒ユ敮鎸佸氱嚎绋嬬紪绋嬨傚彲浠ュ皢姣忎釜璇锋眰镄勫勭悊鏀惧湪涓涓鍗旷嫭镄勭嚎绋嬩腑杩愯岋纴浠庤屽疄鐜板苟鍙戝勭悊銆

铡熷洜鏄锛屽綋涓涓璇锋眰镓ц屼竴涓钥楁椂镎崭綔镞讹纴濡傛灉浣跨敤钖屾ユ柟寮忥纴鏁翠釜璇锋眰澶勭悊娴佺▼浼氲阒诲烇纴鐩村埌钥楁椂镎崭綔瀹屾垚銆傝繖浼氩艰嚧链嶅姟鍣ㄦ棤娉曞勭悊鍏朵粬璇锋眰锛岄犳垚镐ц兘鐡堕堛傝屼娇鐢ㄥ纾姝ョ紪绋嫔拰澶氱嚎绋嫔彲浠ュ湪绛夊緟钥楁椂镎崭綔镄勫悓镞讹纴澶勭悊鍏朵粬璇锋眰锛屾彁楂樻湇锷″櫒镄勫苟鍙戝勭悊鑳藉姏銆

闇瑕佹敞镒忕殑鏄锛屽苟鍙戝勭悊100涓钥楁椂璇锋眰骞朵笉镒忓懗镌钖屾椂澶勭悊100涓璇锋眰锛屽洜涓烘湇锷″櫒镄勫勭悊鑳藉姏鏄链夐檺镄勚傚疄闄呬笂锛屾湇锷″櫒鍙鑳戒细镙规嵁鍏惰祫婧愬拰閰岖疆锛岄檺鍒跺悓镞跺勭悊镄勮锋眰鏁伴噺銆傚洜姝わ纴鍦ㄥ苟鍙戝勭悊钥楁椂璇锋眰镞讹纴闇瑕佹牴鎹链嶅姟鍣ㄧ殑瀹为檯𨱍呭喌杩涜岄傚綋镄勮皟浼桦拰閰岖疆锛屼互纭淇濇ц兘鍜岀ǔ瀹氭с

姝ゅ栵纴杩桦彲浠ラ氲繃浣跨敤璐熻浇鍧囱鍣ㄣ佷紭鍖栨暟鎹搴撴煡璇㈢瓑鎶链𨱒ヨ繘涓姝ユ彁楂樻湇锷″櫒镄勫苟鍙戝勭悊鑳藉姏锛屼互搴斿瑰ぇ閲忕殑钥楁椂璇锋眰銆

⑵ 用Python 做策略回测,耗时很长,有什么加速办法

1. 在动手优化之前,先profile看看,程序时间都花在哪些地方了:

python -m cProfile -o output.prof your_program
跑完之后,会生成一个output.profile文件。接下来需要对这个文件进行分析,这方面的工具我推荐SnakeViz,神器。安装非常简单,pip install snakeviz 即可。

snakeviz output.prof
运行之后,会打开一个浏览器窗口,好好看看,哪些函数耗时最多,耗时是因为调用次数太多呢,还是因为单次调用耗时长,明确优化重点;
2. 减少重复计算,缓存计算结果。看看 functools.lru_cache。
3. 能用list comprehension的地方,不要用for;能用numpy的地方,不要手写循环,不要用pandas;
4. 看你的回测,40w个tick的话,数据量不算大,应该是直接load到内存里的吧?
5. 还是慢的话,上Numba — Numba,就是安装麻烦一些,使用起来非常方便,速度提高一两个数量级没问题;
6. 如果你用的包PyPy都支持的话,试试pypy;
7. Cython、c mole,上面的都没效果的话,这个是最后的候选方案了。

⑶ python 打印出函数执行所用时间

使用timeit模块,先介绍下:

timeit 模块

timeit模块定义了接受两个参数的Timer类。两个参数都是字符串。 第一个参数是你要计时的语句或者函数。 传递给Timer的第二个参数是为第一个参数语句构建环境的导入语句。 从内部讲,timeit构建起一个独立的虚拟环境, 手工地执行建立语句,然后手工地编译和执行被计时语句。

一旦有了Timer对象,最简单的事就是调用timeit(),它接受一个参数为每个测试中调用被计时语句的次数,默认为一百万次;返回所耗费的秒数。

Timer对象的另一个主要方法是repeat(), 它接受两个可选参数。 第一个参数是重复整个测试的次数,第二个参数是每个测试中调用被计时语句的次数。 两个参数都是可选的,它们的默认值分别是3和1000000。repeat()方法返回以秒记录的每个测试循环的耗时列表。Python有一个方便的min函数可以把输入的列表返回成最小值,如: min(t.repeat(3, 1000000))

你可以在命令行使用timeit模块来测试一个已存在的Python程序,而不需要修改代码。


再给你个例子,你就知道怎么做了。

#-*-coding:utf-8-*-
#!/bin/envpython

deftest1():
n=0
foriinrange(101):
n+=i
returnn

deftest2():
returnsum(range(101))

deftest3():
returnsum(xforxinrange(101))

if__name__=='__main__':
fromtimeitimportTimer
t1=Timer("test1()","from__main__importtest1")
t2=Timer("test2()","from__main__importtest2")
t3=Timer("test3()","from__main__importtest3")
printt1.timeit(1000000)
printt2.timeit(1000000)
printt3.timeit(1000000)
printt1.repeat(3,1000000)
printt2.repeat(3,1000000)
printt3.repeat(3,1000000)
阅读全文

与python函数耗时相关的资料

热点内容
安卓路由表怎么看 浏览:74
10个小孩分糖果python 浏览:823
安卓app小红点怎么取消 浏览:286
马哥linux面授 浏览:768
2345程序员 浏览:371
怎么开启网速显示安卓 浏览:204
索尼950app怎么样 浏览:391
计算机毕设论文源码 浏览:148
小米手机怎么下载易媒体App 浏览:191
还原系统设计可以怎样清理文件夹 浏览:670
北京时间校准服务器云服务器 浏览:844
pythonexcel数据计算 浏览:49
内医附院党建APP怎么下载 浏览:356
荣耀v20刷加密门禁卡 浏览:329
app缓冲视频怎么保存在手机 浏览:433
广度优先算法c语言 浏览:680
提高程序员竞争力 浏览:108
nfc可以开加密门卡吗 浏览:675
如何知道网页使用的服务器是什么 浏览:224
单片机接反电源会烧吗 浏览:287