与其他模块相比,导入tflearn需要花费大量的时间。
在一个新创建的虚拟环境中,该环境只安装了tflearn,并且安装在pip中的依赖性最小。
import numpy as np ~0.18simport tensorflow as tf ~0.90import tflearn需要3.1s(并要求我安装h5py和scipy)。按建议安装h5py和After后,import tflearn消耗的时间增加到3.5s。如何减少进口时间?
(以上所有测试都是通过将语句放入test.py并多次运行time python test.py来完成的。报告时间是由bash的time内建所报告的“真实”时间。
发布于 2018-06-27 12:00:47
简短的回答
在木星或其他有长时间解释器会话的地方做您的初始工作,这样您就不需要等待那么多的导入了。
长篇大论
您可以使用python -v跟踪导入。我从apt安装了moreutils,tensorflow和tflearn从pip安装在一个原始的python:3.6-stretch码头容器中.
root@10e4bcd91377:/# python -v -c 'import tensorflow' 2>&1 | ts '%H:%M:%.S' | grep 'import ' | wc -l
954
root@10e4bcd91377:/# python -v -c 'import tflearn' 2>&1 | ts '%H:%M:%.S' | grep 'import ' | wc -l
1768很明显,导入tflearn导入了大量的包。哪几个?
# python -v -c 'import tflearn' 2>&1 | grep 'import ' | cut -f1 -d# | sort | uniq > tflearn-imports.txt
# python -v -c 'import tensorflow' 2>&1 | grep 'import ' | cut -f1 -d# | sort | uniq > tensorflow-imports.txt
# diff --suppress-common-lines tensorflow-imports.txt tflearn-imports.txt我将省去831行输出,但看起来tflearn导入了所有的tensorflow.contrib,这需要很长时间,而导入tensorflow本身并不是什么好事。有了这些信息,我们可以查看原始的python -v -c 'import tflearn' 2>&1输出--看起来tflearn.variables是导入tensorflow.contrib的模块.
# <snip>
import 'tensorflow.contrib.summary.summary'
import 'tensorflow.contrib'
import 'tflearn.variables'
import 'tflearn.config'
# <snip>会是 statement吗?让我们找出..。
# time python -v -c 'from tensorflow.contrib.framework.python.ops import add_arg_scope as contrib_add_arg_scope' 2>&1 | grep 'import ' | wc -l
1727
real 0m4.010s
user 0m3.820s
sys 0m0.410s
root@10e4bcd91377:/#阿尤普,看上去像!由于Python导入的工作方式,导入子模块必须计算整个包,而且由于tensorflow.contrib不使用),所以需要一段时间。
(这里过去曾讨论过如何在模块中实现实现,但这与此无关,因为:)
不幸的是,tflearn中还有其他地方也从contrib中导入零碎信息,因此消除这种依赖不会有多大帮助。
发布于 2018-06-27 12:22:55
一些导入的模块在开始使用时初始化,有些则没有。当您导入它时,tflearn会初始化它,而且由于它有很多依赖项,所以它花费那么多时间并不奇怪。
下面的质量保证会给你很长的时间优化的想法。
improving speed of Python module import
祝好运
https://stackoverflow.com/questions/51061689
复制相似问题