Files
jlengrand.github.io/_posts/2012-02-29-profiling-a-python-script.markdown
Julien Lengrand-Lambert c9cc716349 back to HTTP
2018-03-17 11:41:01 +01:00

65 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
layout: post
status: publish
published: true
title: Profiling a Python Script
author: Julien Lengrand-Lambert
author_login: jlengrand
author_email: julien@lengrand.fr
author_url: http://www.lengrand.fr
wordpress_id: 546
wordpress_url: http://www.lengrand.fr/?p=546
date: 2012-02-29 11:43:08.000000000 +01:00
categories:
- Python
tags:
- project euler
- profile
- profiler
- module
- stack overflow
comments: []
---
Here are some simple ways to profile Python scripts.I heavily use this to check my <strong><a title="PE solutions" href="http://github.com/jlengrand/project_euler" target="_blank">Project Euler solutions</a></strong>.
<h1></h1>
<h1><strong>SOLUTION 1:</strong></h1>
The main common option would be to use the <a title="profile" href="http://docs.python.org/library/profile.html?highlight=profile#cProfile" target="_blank"><strong>profile</strong> </a>(or <strong><a title="cprofile" href="http://docs.python.org/library/profile.html?highlight=profile#cProfile" target="_blank">cprofile</a></strong>) module.There are two different ways of using it :
<ul>
<li>As a module, by directly running</li>
</ul>
<div>{% highlight python %}
python -m cProfile script.py
{% endhighlight %}
</div>
<div></div>
<div>
<ul>
<li>In your code, by importing the utilities</li>
</ul>
<div>{% highlight python %}
import cProfile
cProfile.run('function()') # in your __main__
{% endhighlight %}
<em>Bonus : You can use several options for sorting results using the -s switch (cumulative/name/time/file sorting are available).</em>
<h1><strong>SOLUTION 2:</strong></h1>
If you want to avoid using a command line, or you don't have the profile module installed; here os another possibility. There is also the <strong><a title="timeit module" href="http://docs.python.org/library/timeit.html" target="_blank">timeit </a></strong>module available.
{% highlight python %}
import timeit
t1 = timeit.Timer("function()", "from __main__ import function")
print t1.timeit(1)
{% endhighlight %}
I use this option on Eclipse because I didn't want to install the profile module on Windows.
This is however less clear, and way less detailed while still useful :).
Choose you profiler option and get on <a title="PE" href="http://projecteuler.net/" target="_blank"><strong>Project Euler</strong> </a>!
[<a title="SO" href="http://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script" target="_blank">Stack Overflow</a>]
</div>
</div>