2012-01-21 36 views
10

Ai đó có thể cho thấy những gì sẽ là thực hành tốt nhất hoặc một thư viện phù hợp để xác định:Làm thế nào để xác định chi phí CPU và bộ nhớ của một chức năng?

  1. Số CPU chu kỳ sử dụng trong thực hiện một chức năng Python?
  2. Số tiền Bộ nhớ được sử dụng bởi cùng chức năng Python?

tôi đã nhìn guppymeliae, nhưng vẫn không thể có được hạt đến mức chức năng? Tui bỏ lỡ điều gì vậy?

CẬP NHẬT Nhu cầu hỏi câu hỏi này là để giải quyết một tình huống cụ thể đó là, kịch bản là chúng ta có một tập hợp các nhiệm vụ phân phối chạy trên trường điện toán đám mây, và bây giờ chúng ta cần phải sắp xếp lại vị trí các nhiệm vụ trên các kiểu cá thể phù hợp với cụm, ví dụ các tác vụ hàm tiêu thụ bộ nhớ cao sẽ được đặt trên các thể hiện bộ nhớ lớn hơn và cứ như vậy. Khi tôi có nghĩa là nhiệm vụ (nhiệm vụ cần tây), đây là không có gì, nhưng chức năng đơn giản mà chúng ta cần phải bây giờ hồ sơ sử dụng thực hiện của họ.

Cảm ơn.

+10

Nếu bạn cần phải lo lắng về những điều này chính xác thì Python không phải là ngôn ngữ cho bạn. –

+2

"Tôi có thiếu gì đó không?" Vâng. Bạn đang thiếu một thực tế là Python dựa trên một trong nhiều triển khai: CPython, Jython, PyPy, mỗi trong số đó là khác nhau. Hầu hết các triển khai trực tiếp hoặc gián tiếp nằm trên thư viện GNU C khác nhau từ bản phát hành đến bản phát hành. Nó sẽ rất, rất khó để đo chu kỳ CPU vì có quá nhiều lớp phần mềm liên quan. Bạn đang cố gắng học gì? Những gì bạn cần biết? Bạn đang cố gắng đưa ra quyết định gì? –

+0

như @ S.Lott cho biết, Sẽ rất khó để xác định chu kỳ CPU của hàm EXACT kể cả khi bạn có thể đo lường nó, kết quả sẽ không chính xác. – user779444

Trả lời

7

Bạn có thể muốn xem xét một CPU profiler cho Python:
http://docs.python.org/library/profile.html
đầu ra Ví dụ về cProfile.run(command[, filename])

2706 function calls (2004 primitive calls) in 4.504 CPU seconds 

Ordered by: standard name 

ncalls tottime percall cumtime percall filename:lineno(function) 
    2 0.006 0.003 0.953 0.477 pobject.py:75(save_objects) 
    43/3 0.533 0.012 0.749 0.250 pobject.py:99(evaluate) 
... 

Ngoài ra, memory cần một hồ sơ quá:
profilers mã nguồn mở: PySizerHeapy

+0

Cảm ơn @Ayoubi cho con trỏ trên, nó chắc chắn sẽ giúp một chút. Cảm ơn một lần nữa. –

+1

@ayoubi: Điều này sẽ hiển thị thời gian thực hiện, nhưng điều gì về chu kỳ CPU (sử dụng CPU), Bộ nhớ (sử dụng bộ nhớ)? –

Các vấn đề liên quan