Tôi đang cố gắng tìm hiểu thời gian thực hiện câu lệnh Python, vì vậy tôi đã xem trực tuyến và thấy rằng thư viện chuẩn cung cấp mô-đun có tên là timeit mà nội dung thực hiện chính xác rằng:Nhận "tên toàn cầu 'foo' không được xác định" với thời gian của Python
import timeit
def foo():
# ... contains code I want to time ...
def dotime():
t = timeit.Timer("foo()")
time = t.timeit(1)
print "took %fs\n" % (time,)
dotime()
Tuy nhiên, điều này tạo ra một lỗi:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in dotime
File "/usr/local/lib/python2.6/timeit.py", line 193, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
NameError: global name 'foo' is not defined
tôi vẫn còn mới để Python và tôi không hiểu đầy đủ tất cả các vấn đề Phạm vi nó có, nhưng Tôi không biết tại sao đoạn mã này không hoạt động. Có suy nghĩ gì không?
Nó hoạt động! Tuy nhiên, đây là một thiết kế giao diện khá ngu ngốc nếu tôi có cả hai cung cấp lệnh tôi muốn thời gian như một chuỗi và nhập khẩu các mô-đun __main__ cho nó để làm việc. –
Việc đặt tên Python là hoàn toàn điên rồ với tôi. Tôi cho rằng nó có ý nghĩa đối với một loại tâm trí nào đó, nhưng cái trí óc đó không phải là thứ mà tôi tình cờ có được. Cảm ơn $ DEITY cho Ruby, trong trường hợp của tôi. – womble
womble, đây là một wart, không phải là một vấn đề không gian tên python chung. Chủ đề chính: http://writeonly.wordpress.com/2008/09/12/using-python-timeit-to-time-functions/ có liên kết đến các cuộc thảo luận khác về việc này. –