मैं अजगर कार्यों मैं कोड के प्रदर्शन को मापने के लिए सक्षम होने की तरह है, इसलिए बहुत बार मैं इस के समान कुछ करना ...समारोह डेकोरेटर
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
हाँ, मुझे पता है तुम timeit साथ प्रदर्शन को मापने के अपेक्षा की जाती है , लेकिन यह मेरी ज़रूरतों के लिए ठीक काम करता है, और मुझे इस जानकारी को बहुत आसानी से डिबगिंग के लिए चालू और बंद करने की अनुमति देता है।
ज़ाहिर है कि कोड इससे पहले कि मैं समारोह सज्जाकार बारे में पता था से था ... मैं अब उनके बारे में ज्यादा पता है, लेकिन मुझे लगता है कि मैं एक डेकोरेटर कि निम्नलिखित किया लिखने ** kwds शब्दकोश का उपयोग कर सकता है ऐसा नहीं है कि:
some_function(arg1, arg2, ..., argN) # Does not time function
some_function(arg1, arg2, ..., argN, verbose = True) # Times function
मैं फिर भी, मेरे कार्यों की पूर्व काम कर नकल करने ताकि काम कर रहे कुछ अधिक की तरह होगा चाहते हैं:
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
मुझे लगता है कि इस तर्क की संख्या गिनने के लिए डेकोरेटर की आवश्यकता होगी, पता मूल कार्य कितना लेगा, स्ट्राइक पी अतिरिक्त में, कार्य करने के लिए उनमें से सही संख्या पास करें ... मैं अनिश्चित हूं हालांकि यह करने के लिए पाइथन को कैसे बताना है ... क्या यह संभव है? क्या इसे हासिल करने का एक बेहतर तरीका है?
लेकिन क्या "some_function (ARG1, ARG2, ..., argN, यह सच है)" भी चलाना चाहिए है? –
ठीक है, इसके लिए एक और प्रकार की सजावट की आवश्यकता होगी। वह जो निरीक्षण का उपयोग करता है या एक अतिरिक्त संख्यात्मक मान लेता है जो सजाए गए फ़ंक्शन को निर्धारित तर्कों की निश्चित संख्या दर्शाता है। – Stephan202
मेरे लिए स्टीफन लिखने के लिए धन्यवाद! मैं काम से घर के रास्ते पर इस बारे में सोच रहा था, और मैं इस निष्कर्ष पर आया हूं कि इसके लिए कीवर्ड तर्क का उपयोग करना एक बेहतर तरीका है, क्योंकि इससे मुझे अन्य पैरामीटर शामिल करने की अनुमति मिल जाएगी, जैसे फ़ंक्शन कितनी बार , और क्या प्रिंटआउट औसत समय, न्यूनतम समय, या अधिक विस्तृत आंकड़े प्रतिबिंबित करना चाहिए ... – Jaime