Verwenden timeit die Ausführung von kleinen Stückchen des Codes zu Zeit.
#sleep2.py
import time
time.sleep(2)
Sie müssen subprocess.call verwenden zu blockieren, bis der Anruf beendet ist.
import timeit
import subprocess as sp
def execute_scripts(script_name):
process = sp.call(['python2.7', script_name])
print 'executing - ' + script_name
t = timeit.Timer("execute_scripts('sleep2.py')", setup="from __main__ import execute_scripts")
print 'time taken : %f seconds' % t.timeit(1)
executing - sleep2.py
time taken : 2.032273 seconds
Alternativ können Sie dieses durch das Schreiben eines Dekorateur zu Zeit Aufruf einer beliebigen Funktion verallgemeinern kann
import time
import subprocess as sp
def timed_execution(function):
def wrapper(arg):
t1 = time.time()
function(arg)
t2 = time.time()
return 'time taken : %f seconds' % (t2 - t1) + "\n"
return wrapper
@timed_execution
def execute_scripts(script_name):
sp.call(['python2.7', script_name])
print 'executing - ' + script_name
print execute_scripts('sleep2.py')
executing - sleep2.py
time taken : 2.025291 seconds
verwandten: [Python subprocess mit/usr/bin/Zeit: Wie erfassen Info Timing aber ignorieren alle anderen Ausgabe?] (http://stackoverflow.com/q/28520489/4279) – jfs
@DorkMonStuh sind irgendwelche dieser Antworten akzeptabel? – hhbilly
Hallo, Dies scheint ein blockierender Aufruf zu sein, ist es möglich, non blocking und Zeit, wie lange das Skript dauert zu haben? – DorkMonstuh