GitHub - DIYer22/boxx: Tool-box for efficient build and debug in Python. Especia...
source link: https://github.com/DIYer22/boxx
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Box-X
Introduce | Install | Tutorial | Examples | Acknowledgments
1. Introduce
Box-X
is a Tool-box for Efficient Build and Debug in Python.
Especially, have done a lot of optimization for Scientific Computing and Computer Vision.
So, all Tools are divided into 2 parts by wether the tool is general used:
-
General Python Tool: Tools could be used anywhere in Python
-
Scientific Computing and Computer Vision Tool: Those tools are useful in Scientific Computing and Computer Vision field
P.S. boxx
supports both Python 2/3
on Linux | macOS | Windows
.
2. Install
Via git and pip
pip install git+https://github.com/DIYer22/boxx
From source
git clone https://github.com/DIYer22/boxx
cd boxx/
python setup.py install
If no git
pip install boxx -U
?Note:
- Recommended to install via git or source because PyPI mirrors may has a big delay.
- Please ensure
boxx
's version >0.9.1
. Otherwise, please install from source.
3. Tutorial
Box-X
's Tutorial is a Jupyter Notebook file that allows run examples while view Tutorial.
There are 3 methods to view/run this Tutorial
Method 1: Executable Interactive Online Notebook
We use Binder to run Tutorial Notebook in an executable interactive online jupyer environment.
That's mean you can run code in notebook rightnow in your browser without download or install anything.
Method 2: Download and Run at Local
git clone https://github.com/DIYer22/boxx
cd boxx/
python setup.py install
jupyter notebook
Then open ./tutorial_for_boxx.ipynb
in notebook.
Method 3: Static Noetbook
Just view the Tutorial Notebook.
4. Examples
Examples are divided into 2 parts too.
General Python Tool on left, Scientific Computing and Computer Vision Tool on right.
?Note: Click the GIF or image will restart GIF and see more clearer GIF or image
General Python Tool
▶ p/x
is better way to print(x)
p/x
will print(x)
and return x
?Note: p/x
is easy to print value in expression.
▶ Use g.name = x
or g.name/x
to transport variable to Python interactive console
gg
is the meaning of "to Global and log", has same usage asg
, butgg
will print the transported variable.- if variable name exists in console before, the variable's value will be covered by new value.
▶ g()
to transport all vars that in the function to Python interactive console
?Note: g()
is a useful tool for debug. import boxx.g
is convenient way to use g()
instead of from boxx import g;g()
(import boxx.gg
is avaliable too)
▶ with p
, with g
, with gg
are mulit variables version of p
, g
, gg
that work under "with statement"
Only act on interested variables which is under "with statement"
?Note:
-
with p
,with g
,with gg
only act on assignment variables under "with statement". -
If variable's name exists in
locals()
before andid(variable)
not change ,variable may not be detected
Scientific Computing and Computer Vision
Useful tools in Scientific Computing and Computer Vision field. All tools support array-like types, include numpy
, torch.tensor
, mxnet.ndarray
, PIL.Image
.etc
?Note: If you are using ssh
to execute code on a remote server, it is recommended that ssh
plus -X
make visualized plt
charts can be transferred to the local and display, like ssh -x user@host
.
▶ loga
to visualization matrix and tensor
loga
is short of "log array", loga
will show many attributes of array-like object.
?Note: loga
analysis array-like object by it's shape, max, min, mean, and distribute. Support numpy
, torch.tensor
, mxnet.ndarray
, PIL.Image
.etc
▶ show
is easy to do imshow
, even images are in complex struct
show
could find every image in complex struct and imshow they.
?Note: if args inculde function(like torgb
). those functions will process all numpys befor imshow.
▶ tree
for visualization complex struct
like tree
command in shell, boxx.tree
could visualization any struct in tree struct view.
?Note: tree
support types include list
, tuple
, dict
, numpy
, torch.tensor/Dataset/DataLoader
, mxnet.ndarray
, PIL.Image
.etc
▶ boxx
debug tool matrix
How many vars \ Operation
print
transport
print & transport
Single variable
p/x
g.name/x
gg.name/x
Multi variables
with p:
with g:
with gg:
All locals()
p()
g()
gg()
All locals()
_2
import boxx.p
import boxx.g
import boxx.gg
?Note:
- transport mean "transport variable to Python interactive console"
- All
locals()
mean operation will act on all variables in the function or module - All
locals()
_2 : whenboxx
are not imported,import boxx.{operation}
is a convenient way to execution operation
▶ what
to know "What's this?"
?Note: what(x)
will show "what is x
?" by pretty print it's Self, Document, Father Classes, Inner Struct and Attributes. It is a supplement of help(x)
.
▶ timeit
is convenient timing tool
?Note: timeit
will timing code block under "with statement" and print spend time in blue color.
▶ mapmp
is Multi Process version of map
mapmp
is the meaning of "MAP for Multi Process", has the same usage as map
but faster.
?Note:
- pool parameter in
mapmp
mean the number of Process, the default is the number of CPUs in the system. - In multi process programs, display processing progress is troublesome. printfreq parameter in
mapmp
can handle this problem. - Like
map
,mapmp
support muliti args to as input to function, likemapmp(add, list_1, list_2)
. -
- It's better to run multi process under
__name__ == '__main__'
environment.
- It's better to run multi process under
- If you speed up the
numpy
program, note that in the MKL version ofnumpy
, multiple processes will be slower. You can runboxx.testNumpyMultiprocessing()
to test how friendly the current environment is to a multi-processnumpy
.
▶ heatmap
to show the time heat map of your code
?Note: heatmap
also support python code string.
▶ performance
could statistic function calls and visualize code performance
?Note: performance
also support python code string.
5. Acknowledgments
- Thanks to Xiaodong Xu, Guodong Wu, Haoqiang Fan, Pengfei Xiong for their suggestions
- I develop
boxx
in Spyder IDE, Spyder is a awesome Scientific Python Development Environment with Powerful Qt-IPython performance
is supported by SnakeVizheatmap
is supported by csurfer/pyheatboox.x_
is supported by Fn.py: enjoy FP in Python
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK