2017-03-15 7 views

답변

0

는 대부분의 파이썬 라이브러리가 __version__ 속성을 구현하는 시도 :

내 타이밍이 또한 최고 좋습니다. 나는 세 가지 방법으로 시도 :

import time 
import pip 
import pkg_resources 
from pip.operations import freeze 


# __version__ 
t0 = time.time() 
version_number = pip.__version__ 
t1 = time.time() 

total = t1-t0 
print("__version__ =", version_number, "in", total) 

# pip freeze 
t0 = time.time() 
x = freeze.freeze() 

for p in x: 
    if p[:p.find('==')] == "pip": 
     version_number = p[p.find('==')+2:] 
     break 
t1 = time.time() 

total = t1-t0 
print("pip freeze =", version_number, "in", total) 

# pkg_resources 
t0 = time.time() 
version_number = pkg_resources.get_distribution("pip").version 
t1 = time.time() 

total = t1-t0 
print("pkg_resources =", version_number, "in", total) 

pip freeze 방법은 당신이 시스템에 얼마나 많은 모듈에 따라 타이밍이 높은 변수가 될 것 명심하십시오.

결과 : 내 시스템 __version__

__version__ = 9.0.1 in 2.1457672119140625e-06 
pip freeze = 9.0.1 in 0.04388904571533203 
pkg_resources = 9.0.1 in 0.0016148090362548828 

+0

pkg_resources보다 7.5 배 빠른 속도였다 나는 내가 확실히 이해하지 못하는 것은 pkg_resources.get_distribution'이 실제로 무엇을하고 있는지 '추측? 'module .__ version__' 이외의 것을보고 있습니까? – KX68C4qxM51mtdzex7O8iMPU

+0

아니요, 여기를 살펴보십시오. [pkg_resources.py] (http://svn.python.org/projects/sandbox/branches/setuptools-0.6/pkg_resources.py) – Morgoth

+0

@ KX68C4qxM51mtdzex7O8iMPU, 동의해야합니다. 그것이 당신을 돕는다면 대답. – Morgoth