2016-08-22 4 views
2

pytohn의 for 루프 내부에서 특정 코드 세그먼트를 벤치 마크하고 싶습니다.시간 제한이있는 Python 루프 벤치 마크

def createTokens(): 
    keypath=('./pickles/key.pickle') 
    path="./data/" 
    directory = os.listdir(path) 
    tok={} 
    print('create tokens..') 
    t=[2**4,2**5,2**6,2**7,2**8,2**9,2**10,2**12,2**14,2**16] 
    files=['pl_10000004','pl_10000002','pl_100000026'] 
    for filename in files: 
     for i in t: 
      code='etok=utils.token(filename,keypath,str(i))' 
      t = timeit.Timer(stmt=code,setup='from __main__ import utils') 
      print(filename+'_'+str(i)+'.pickle') 
      print ('%f'%float(t.timeit(10/10))) 

그러나이 제기 :

NameError: global name 'filename' is not defined 

내가 설정 변수 파이썬에서 파일 이름을 포함 말한다 :

ImportError: cannot import name filename 

을이 해결 방법을 다음과 같이 내가 timeit를 사용하고?

+0

을 할 수 있습니까? – curious

답변

2

filenametimeit 블록의 코드 범위에서 정의되지 않습니다. 나는 무엇을 utils이 코드에 모르겠지만, 가정은 문자열로 filenamekeypath 단지로

code='etok=utils.token(filename,keypath,str(i))' 

라인을 대체 할 것으로 예상 :이

code='etok=utils.token("{}","{}",{})'.format(filename, keypath, i) 
1

이 시도 :

code='etok=utils.token("%s","%s","%s")' % (filename, keypath, i) 

이 당신이 원하는 값이 코드 문자열을 만들 수 있습니다. 또한 %s 변환을 사용하면 i이 강제로 str 유형으로 변환됩니다.

편집 : 값 주위에 큰 따옴표가 추가되었습니다.

+0

변수에 할당 된 값과 관련하여 오류가 발생합니다 :'NameError : global name 'pl_10000004'is not defined'. pl_10000004는 루프에서 파일 이름 var의 첫 번째 할당입니다. – curious

+0

문자열 삽입 지점 주위에 따옴표를 추가해야합니다. 나는. 'utils.token ("% s", "% s", % s)'. – FamousJameous

+0

@FamousJameous : 감사합니다. 그것이 내가 통역사에서 이것을 시험하지 않은 것에 대한 것입니다. –