Python 一个性能优化问题

2014-04-18 10:30:04 +08:00
 linzhi
假设有100个脚本 001.py ... 100.py(就100个单独的文件,不合并)均要调用同一个脚本dst.py, dst.py中的对象初始化要花费不少时间(大概30秒),

100个脚本执行完毕,那么dst.py中的对象就频繁初始化,开销很大,如何做到 dst.py中的对象只初始化一次呢!!!

设计模式?设计模式?
4894 次点击
所在节点    Python
12 条回复
yuelang85
2014-04-18 10:36:49 +08:00
如果你是同一个进程,比如这样:

a.py是主程序文件,运行后负责调用1.py这些。而1.py2.py又引入了dst.py,那么dst.py实际只初始化了一次。在同一个进程内,如果没有特殊操作,一个模块只初始化一次。


如果你每个1.py都是独立的主文件分别执行。那么,想想办法看能不能一个主程序去调用这些1~100.py
linzhi
2014-04-18 10:46:00 +08:00
@yuelang85

如果你每个1.py都是独立的主文件分别执行。那么,想想办法看能不能一个主程序去调用这些1~100.py

这个可以试试看~~
leiz
2014-04-18 10:51:05 +08:00
包一个caller
thwawar
2014-04-18 12:39:40 +08:00
或许可以把 dst.py 做成Server,那一百个脚本都通过 socket 和它通信。
dayigu
2014-04-18 13:35:49 +08:00
在 ipython 中跑
linzhi
2014-04-18 13:46:44 +08:00
@thwawar 目前有个要求是 001.py ... 100.py 代码一点都不改动...
cute
2014-04-18 14:56:33 +08:00
import dst
for x in range(100):
----execfile('%03d.py' % x, globals(), locals())
wodemyworld
2014-04-18 15:54:18 +08:00
懒.kill()
fburst
2014-04-18 16:14:28 +08:00
写个py,分别import 100个文件中的执行函数然后执行。

跟1楼是一样的
linzhi
2014-04-19 15:02:11 +08:00
@fburst
@yuelang85

有没有只修改dst.py这个文件的方法....
duriantang
2014-04-24 18:05:43 +08:00
可以用pickle把初始化好的对象保存下到磁盘上。
yuelang85
2014-04-27 12:25:28 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/109050

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX