Python fonksiyonları çok kodun performansını ölçmek mümkün olmak gibi, bu yüzden çok sık ben buna benzer bir şey yapmak ...Fonksiyon Dekoratörler
import time
def some_function(arg1, arg2, ..., argN, verbose = True) :
t = time.clock() # works best in Windows
# t = time.time() # apparently works better in Linux
# Function code goes here
t = time.clock() - t
if verbose :
print "some_function executed in",t,"sec."
return return_val
Evet, sen sürümüyle gelen timeit ile performansını ölçmek gerekiyor biliyorum ama bu sadece ihtiyaçlar için iyi çalışıyor ve bu bilgileri çok kolay bir şekilde hata ayıklamak için açıp kapatmamı sağlıyor. Tabii ki bu kod ben işlev dekoratörler hakkında tanımadan önce oldu
... Şimdi onlar hakkında çok şey biliyorum, ama ben ** kwds sözlüğünü kullanarak aşağıdakileri yaptığı bir dekoratör yazabilirsiniz düşünüyorum Değil:
some_function(arg1, arg2, ..., argN) # Does not time function
some_function(arg1, arg2, ..., argN, verbose = True) # Times function
Ben yine de bir şey fazla gibi çalışma olacağını, böylece benim fonksiyonları bilinen çalışma çoğaltmak istiyoruz
: Bu argüman sayısını saymak için dekoratör gerektirecektir tahmin
some_function(arg1, arg2, ..., argN) # Does not time function
some_function(arg1, arg2, ..., argN, False) # Does not time function
some_function(arg1, arg2, ..., argN, True) # Times function
, biliyorum orijinal fonksiyon kaç tane alacak p herhangi bir fazlalık, doğru sayıyı işleve iletin ... Ben python'a bunu nasıl söyleyeceğimi bilmiyorum ... Bu mümkün mü? Aynı şeyi elde etmenin daha iyi bir yolu var mı? Ne istediğinizi size yolda biraz alabilirsiniz inspect olsa
ama ne "some_function (arg1, arg2, ..., argN, True)" da çalıştırmalısınız nedir? –
Bu başka bir dekoratör gerektiriyor. Biri, incelenen fonksiyonun aldığı sabit sayıda argümanı gösteren ek bir sayısal değeri inceler veya kullanır. – Stephan202
Benim için yazdığınız için teşekkürler Stephan! İşten eve dönerken bu konuyu düşünüyordum ve bunun için anahtar kelime argümanlarını kullanmanın daha iyi bir yaklaşım olduğu sonucuna vardım. ve çıktının ortalama zamanı, minimum zamanı veya daha ayrıntılı istatistikleri yansıtıp yansıtmadığı ... – Jaime