2015-06-21 27 views
1
from itertools import permutations 
import random 
import pprint 
import timeit 

start_time = timeit.default_timer() 
count = 0 
def gird(board_size): 

    print ("\n".join('# ' * inrange + 'Q ' + '# ' * (8-inrange-1)\ 

for inrange in board_size) + "\n\n= = new board \n") 
count+=1 
coloms = range(8) 
for board_size in permutations(coloms): 
    if 8 == len(set(board_size[inrange]+inrange for inrange in coloms)): 
     if 8 == len(set(board_size[inrange]-inrange for inrange in coloms)): 
      gird(board_size) 


      elapsed = timeit.default_timer() - start_time 
      print(elapsed) 
      print(count) 

我想看看這段代碼運行多少次,我必須測量搜索成本(迭代次數,直到遇到最小值)和百分比解決了問題。這是一個8皇后問題。我怎麼能計算多少時間程序已經在python執行

+0

[XY問題]的案例(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)? –

+0

@詹姆斯米爾斯這是一個8皇后問題,我只是想多少次它運行到停止 –

+1

'計數= 0'和其他地方在你的代碼'計數+ = 1'? – IanAuld

回答

1

我怎麼能算多少時間計劃已在蟒蛇被執行

如你所描述它,我能想到的,以滿足您的問題唯一方式而不是運行你的函數N時間是這樣的:

例子:

from __future__ import print_function 


import atexit 
from os import path 
from json import dumps, loads 


def read_counter(): 
    return loads(open("counter.json", "r").read()) + 1 if path.exists("counter.json") else 0 


def write_counter(): 
    with open("counter.json", "w") as f: 
     f.write(dumps(counter)) 


counter = read_counter() 
atexit.register(write_counter) 


def main(): 
    print("I have been run {} times".format(counter)) 


if __name__ == "__main__": 
    main() 

樣品試驗(S):

$ python foo.py 
I have been run 1 times 
$ python foo.py 
I have been run 2 times 
$ python foo.py 
I have been run 3 times 

但是我必須指出,這是不是一個很好的方式來「測量」的程序,或者你已經寫功能的性能。你應該看看諸如hotshottimeit之類的東西,或者在內部多次運行你的功能並測量「正確的事情」。