User Tools

Site Tools


other:python:jyp_steps

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
other:python:jyp_steps [2016/02/18 11:02]
jypeter Started the debug section
other:python:jyp_steps [2016/02/23 10:03]
jypeter Added links to Numexpr and PyTables
Line 192: Line 192:
 ===== Debugging your code ===== ===== Debugging your code =====
  
-There is only so much you can do with staring at your code in your favorite text editor, and adding ''​print''​ lines in your code (or [[https://​docs.python.org/​2/​howto/​logging.html#​logging-basic-tutorial|using logging]] instead of ''​print''​). The next step is to use the python debugger!+There is only so much you can do with staring at your code in your favorite text editor, and adding ''​print''​ lines in your code (or using [[https://​docs.python.org/​2/​howto/​logging.html#​logging-basic-tutorial|logging]] instead of ''​print''​). The next step is to **use the python debugger**!
  
 ==== Debugging in text mode ==== ==== Debugging in text mode ====
 +
 +  - Start the script with: ''​python -m pdb my_script.py''​
 +  - Type ''​run''​ (or **r**) to go to the first line of the script
 +  - Type ''​continue''​ (or **c**) to execute the script to the end, or till the first breakpoint or error is reached
 +  - Use ''​where''​ (or **w**) to check the call stack that led to the current stop. Use ''​up''​ and ''​down''​ to navigate through the call stack and examine the values of the functions'​ parameters
 +  - Type ''​break NNN''​ to stop at line NNN
 +  - Use ''​type(var)''​ and ''​print var''​ to check the type and values of variables. You can also change the variables'​ values on the fly!
 +  - Type ''​run''​ (or **r**) to restart the script
 +  - Use ''​next''​ and ''​step''​ to execute some parts of the script line by line. If a code line calls a function:
 +    * ''​next''​ (or **n**) will execute a function and stop on the next line
 +    * ''​step''​ (or **s**) will stop at the first line **inside the function**  ​
 +  - Check the [[https://​docs.python.org/​2/​library/​pdb.html#​debugger-commands|debugger commands]] for details, or type ''​help''​ in the debugger for using the built-in help
  
 ==== Using pydebug ==== ==== Using pydebug ====
  
 +Depending on the distribution,​ the editor and the programming environment you use, you may have access to a graphical version of the debugger. UV-CDAT users can use ''​pydebug my_script.py''​
  
 ===== Improving the performance of your code ===== ===== Improving the performance of your code =====
Line 210: Line 223:
  
 Hint: before optimizing your script, you should spent some time //​profiling//​ it, in order to only spend time improving the slow parts of your script Hint: before optimizing your script, you should spent some time //​profiling//​ it, in order to only spend time improving the slow parts of your script
 +
 +==== Useful packages ====
 +
 +  * [[https://​github.com/​pydata/​numexpr|Numexpr]]:​ //Numexpr is a **fast numerical expression evaluator for NumPy**. With it, expressions that operate on arrays (like "​3*a+4*b"​) are accelerated and use less memory than doing the same calculation in Python.//
 +  * [[http://​www.pytables.org/​|PyTables]]:​ //PyTables is a package for managing hierarchical datasets and designed to efficiently and **easily cope with extremely large amounts of data**//
  
 ==== Tutorials by Ian Osvald ==== ==== Tutorials by Ian Osvald ====
other/python/jyp_steps.txt · Last modified: 2024/03/07 10:15 by jypeter