阅读笔记

作者:方跃文

Email: fyuewen@gmail.com

时间:始于2017年9月12日

第三章笔记始于2017年9月28日23:38,结束于 2017年10月17日

第三章 IPtyhon: 一种交互式计算和开发环境

IPython鼓励一种“执行探索——execute explore”精神,这就区别于传统的“编辑——编译——执行 edit——complie——run”

IPython 基础


In [19]:
a = 5

In [20]:
a


Out[20]:
5

In [21]:
import numpy as np
from numpy.random import randn
data = {i: randn() for i in range(7)}
print(data)
data1 = {j: j**2 for j in range(5)}
print(data1)


{0: 1.6677199594835443, 1: -0.5348338544580333, 2: -0.5804083436299905, 3: -2.156324071346383, 4: -0.49482409755600865, 5: -0.9700971146231592, 6: -0.12183027886180367}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Tab 键自动完成

在python shell中,输入表达式时候,只要按下Tab键,当前命名空间中任何已输入的字符串相匹配的变量(对象、函数等)就会被找出来:


In [22]:
an_apple = 27

In [23]:
an_example = 42

In [24]:
an_ #按下tab键就会看到之前定义的变量会被显示出来,方便我们做出选择。


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-24-8ba613501a95> in <module>()
----> 1 an_ #按下tab键就会看到之前定义的变量会被显示出来,方便我们做出选择。

NameError: name 'an_' is not defined

此外,我们还可以在任何对象之后输入一个句点来方便地补全方法和属性的输入:


In [1]:
import IPython
print(IPython.sys_info())


{'commit_hash': 'd86648c5d',
 'commit_source': 'installation',
 'default_encoding': 'cp936',
 'ipython_path': 'D:\\ProgramData\\Miniconda3\\envs\\ywfang-python36\\lib\\site-packages\\IPython',
 'ipython_version': '6.1.0',
 'os_name': 'nt',
 'platform': 'Windows-10-10.0.14393-SP0',
 'sys_executable': 'D:\\ProgramData\\Miniconda3\\envs\\ywfang-python36\\python.exe',
 'sys_platform': 'win32',
 'sys_version': '3.6.3 |Anaconda, Inc.| (default, Oct  6 2017, 10:25:46) [MSC '
                'v.1900 64 bit (AMD64)]'}

In [3]:
a = [1,2,3]

In [4]:
a.append(0)
a


Out[4]:
[1, 2, 3, 0]

In [5]:
import datetime

In [6]:
dt = datetime.time(22,2,2)

In [7]:
dd = datetime.date(2017,2,2)

In [8]:
print("%s %s" % (dt,dd))


22:02:02 2017-02-02

Tab键自动完成成功不只可以搜索命名空间和自动完成对象或模块属性。当我们输入任何看上去像文件路径的东西时(即便是在一个Python字符串中),按下Tab键即可找出电脑文件系统中与之匹配的东西。


In [ ]:
./  #按下Tab键, 如果你当前目录下有文件或者目录,会给出提示。

内省

在变量的前面或者后面加上一个问号就可以将有关该对象的一些通用信息显示出来,这个就是内省,即object introspection.


In [9]:
b=[1,2,3]

In [10]:
b?

上面执行完,jupyter会跳出一个小窗口并且显示如下:

Type: list

String form: [1, 2, 3]

Length: 3

Docstring:

list() -> new empty list

list(iterable) -> new list initialized from iterable's items

如果对象是一个函数或者实例方法,则它的docstring(如果有的话)也会显示出来。例如:


In [11]:
def add_numbers(a,b):
    #引号部分则为docstring
    """
    Add two numbers together
    
    Returns
    -------
    the_sum: type of arguments
    """
    
    return a+b

add_numbers(1,2)


Out[11]:
3

In [12]:
add_numbers?
#加一个问号执行会显示上述我已经编写好的docstring,这样在忘记函数作用的时候还是很不错的功能。

In [13]:
add_numbers??
#加两个问号则会显示该函数的源代码

?还有一个用法,即搜索IPython的命名空间,类似于标准UNIX或者Windows命令行中的那种用法。一些字符再配以通配符即可显示出所有与该通配符表达式相匹配的名称。例如我们可以列出NumPy顶级命名空间中含有“load"的所有函数。


In [14]:
import numpy as np
np.*load*?

上述执行后,jupyter notebooK会给出:

np.loader

np.load

np.loads

np.loadtxt

np.pkgload

%run命令

在IPython会话中,所有文件都可以通过%run命令当作Python程序来运行。假设当前目录下的chapter03文件夹中有个simple01.py的脚本,其中内容为


In [46]:
def f(x,y,z):
    return (x+y)/z
a=5
b=6
c=8

result = f(a,b,c)
print(result)

In [48]:
#执行
%run ./chapter03/simple01.py


1.375

上述脚本simple01.py是在一个空的命名空间中运行的,没有任何import,也没有定义任何其他的变量,所以其行为跟在命令行运行是一样的。此后,该脚本中所定义的变量(包括脚本中的import、函数、全局变量)就可以在当前jupyter notebook中进行访问(除非有其他错误或则异常)


In [49]:
result


Out[49]:
1.375

如果Python脚本中需要用到命令行参数(通过 sys.argv访问),可以将参数放到文件路径的后面,就像在命令行执行那样。

如果希望脚本执行的时候会访问当前jupyter notebook中的变量,应该用…%run -i script.py,例如

我在chapter03文件夹中写下

x = 32

add = x + result

print('add is %d' % (add))


In [52]:
%run -i ./chapter03/simple02.py  #-i即interactive


add is 33

中断执行的代码

任何代码在执行时候(无论是通过%run执行的脚本还是长时间运行的命令),只要按下按下“Ctrl+C”,就会引发一个keyboardInterrupt。出一些特殊的情况之外,绝代分python程序都将因此立即停止执行。

例如:

当python代码已经调用了某个已编译的扩展模块时,按下Ctrl+C将无法立即停止执行。 在这种情况下,要么需要等待python解释器重新获得控制权,要么只能通过 操作系统的任务管理器强制执行终止python进程。

执行剪贴板中的代码

在IPython shell(注意,我这里强调一下,并不是在jupyter notebook中,而是ipython shell,虽然我有时候 把他们两个说的好像等效一样,但是两者还是不同的)中执行代码的最简单方式就是粘贴剪贴板中的代码。虽然这种做法很粗糙, 但是在实际工作中就很有用。比如,在开发一个复杂或耗时的程序时候,我们可能需要一段 一段地执行脚本,以便查看各个阶段所加载的数据以及产生的结果。又比如说,在网上找到了 一个何用的代码,但是又不想专门为其新建一个.py文件。

多数情况下,我们可以通过“Ctrl-Shift-V”将粘贴版中的代码片段粘贴出来(windows中)。

%paste 和 %cpaste 这两个魔术函数可以粘贴剪贴板中的一切文本。在ipython shell中这两个函数 可以帮助粘贴。后者%cpaste相比于%paste只是多了粘贴代码的特殊提示符,可以一行一行粘贴。


In [ ]:
#下面我把我在ipython中执行的代码
$ ipython
Python 3.6.1 |Anaconda custom (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:x = 1
:if x == 1:
:    print("x is 1.")
:
:--
x is 1.

IPython 跟编辑器和IDE之间的交互

某些文本编辑器(EMACS, VIM)带有一些能将代码块直接发送到ipython shell的第三方扩展。某些IDE中也 预装有ipython。

对于我自己而言,我喜欢用git bash,然后在里面折腾vim. 当然我有时候也用IDE

键盘快捷键

IPython提供了许多用于提示符导航(Emacs文本编辑器或者UNIX bash shell的用户对此会很熟悉)和查阅历史shell命令的快捷键。因为我不喜欢在ipython shell中写code,所以我就跳过了。如果有人读到我的笔记发现这里没有什么记录的话请自行查找原书。

异常和跟踪

如果%run某段脚本或执行某条语句发生了一场,IPython默认会输出整个调用栈跟踪traceback,其中还会附上调用栈各点附近的几行代码作为上下文参考。


In [1]:
%run ./pydata-book/ch03/ipython_bug.py


---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
D:\PhDinECNU\readingnotes\readingnotes\machine-learning\McKinney-pythonbook2013\pydata-book\ch03\ipython_bug.py in <module>()
     13     throws_an_exception()
     14 
---> 15 calling_things()

D:\PhDinECNU\readingnotes\readingnotes\machine-learning\McKinney-pythonbook2013\pydata-book\ch03\ipython_bug.py in calling_things()
     11 def calling_things():
     12     works_fine()
---> 13     throws_an_exception()
     14 
     15 calling_things()

D:\PhDinECNU\readingnotes\readingnotes\machine-learning\McKinney-pythonbook2013\pydata-book\ch03\ipython_bug.py in throws_an_exception()
      7     a = 5
      8     b = 6
----> 9     assert(a + b == 10)
     10 
     11 def calling_things():

AssertionError: 

拥有额外的上下文代码参考是它相对于标准python解释器的一大优势。上下文代码参考的数量可以通过%mode魔术命令进行控制,既可以少(与标准python解释器相同)也可以多(带有函数参数值以及其他信息)。本章后面还会讲到如果在出现异常之后进入跟踪栈进行交互式的事后调试post-mortem debugging.

魔术命令

IPython有一些特殊命令(魔术命令Magic Command),它们有的为常见任务提供便利,有的则使你能够轻松控制IPtython系统的行为。魔术命令是以百分号%为前缀的命令。例如,我们可以通过 %timeit 这个魔术命令检测任意Python语句(如矩阵乘法)的执行时间(稍后对此进行详细讲解):


In [17]:
import numpy as np
from numpy.random import randn

a = randn(3,3,3)
a


Out[17]:
array([[[  1.13419890e+00,   8.83885144e-02,   8.04454222e-02],
        [  1.71449713e+00,   1.61348742e+00,   1.84340959e-01],
        [ -1.13356830e+00,   8.79293791e-02,   2.27063217e+00]],

       [[  9.01350036e-02,   1.61557003e-01,  -2.39828001e-01],
        [  9.68252924e-01,  -7.87529339e-01,   2.25804159e-01],
        [  8.60058744e-01,  -3.96583152e-01,   4.93699079e-01]],

       [[ -1.66217045e-01,   8.28603220e-01,  -3.39603416e-01],
        [ -1.16814504e+00,   1.20435531e-03,   9.55416258e-01],
        [  3.13633832e-01,  -2.75001590e-01,   1.56238842e+00]]])

In [18]:
%timeit np.dot(a,a)


10.4 µs ± 5.93 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)

魔术命令可以看作运行于IPython系统中的命令行程序。它们大都还有一些“命令行”,使用“?”即可查看其选项


In [20]:
%reset?

上面执行后,会跳出它的docstring


In [21]:
a = 1

In [22]:
a


Out[22]:
1

In [23]:
'a' in _ip.user_ns  # 不知道为什么这里没有执行通过?


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-23-e243bfdd3e21> in <module>()
----> 1 'a' in _ip.user_ns  # 不知道为什么这里没有执行通过?

NameError: name '_ip' is not defined

In [10]:
%reset -f

In [9]:
'a' in __ip.user__ns


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-9-3fd8e5105dcc> in <module>()
----> 1 'a' in __ip.user__ns

NameError: name '__ip' is not defined

常用的python魔术命令

命令 功能
%quickref 显示IPython的快速参考
%magic 显示所有魔术命令的详细文档
%debug 从最新的异常跟踪的底部进入交互式调试器
%hist #打印命令的输入(可选输出)历史
%pdb 在异常发生后自动进入调试器
%paste 执行粘贴版中的python代码
%reset 删除interactive命名空间中的全部变量、名称
%page OBJECT 通过分页器打印输出 OBJECT
%run script.py 在IPython中执行脚本
%run statement 通过cProfile执行statement,并打印分析器的输出结果
%time statement 报告statement的执行时间
%timeit statement 多次执行statement以计算系统平均执行时间。对那些执行时间非常小的代码很有用
%who、%who_ls、%whos 显示interactive命名空间中定义的变量,信息级别、冗余度可变
%xdel variable 删除variable,并尝试清楚其在IPython中的对象上的一切引用

基于Qt的富GUI控制台

IPython团队开发了一个基于Qt框架(其摩的是为终端应用程序提供诸如内嵌图片、多行编辑、语法高亮之类的富文本编辑功能)的GUI控制平台。如果你已经安装了PyQt或者Pyside,使用下面命令来启动的话即可为其添加绘图功能。

ipython qtconsole --pylab=inline

Qt控制台可以通过标签页的形式启动多个IPython进程,这就使得我们可以在多个任务之间轻松地切换。它也开业跟IPython HTML Notebote (即我现在用的jupyter noteboo)共享同一个进程,稍后我们对此进行演示说明。

matplotlib 集成与pylab模式

导致Ipython广泛应用于科学计算领域的部分原因是它跟matplotlib这样的库以及GUI工具集默契配合。

通常我们通过在启动Ipython时候添加--pylab标记来集成matplotlib


In [ ]:
#在terminal 输入
ipython --pylab

#回显中会出现部分关于matplotlib的字段
#IPython 6.2.0 -- An enhanced Interactive Python. Type '?' for help.
#Using matplotlib backend: Qt5Agg

上述的操作会导致几个结果:

  1. IPython 会启动默认GUI后台集成,这样matplotib绘图窗口创建就不会出现问题;

  2. Numpy和matplotlib的大部分功能会被引入到最顶层的interactive命名空间以产生一个交互式的计算环境(类似matlab等)。也可以通过%gui对此进行手工设置(详情请执行%gui?)


In [5]:
#原书给了一个在ipython命令行的例子
#但是,我这里用jupyter notebook来进行演示
# 我这里的代码跟原书可能不是很相同,
#我参考的是matplotlib image tutorial
%matplotlib inline
import matplotlib.image as mpimg
import numpy as np
import matplotlib.pyplot as plt

img=mpimg.imread('pydata-book/ch03/stinkbug.png')

In [6]:
plt.imshow(img)


Out[6]:
<matplotlib.image.AxesImage at 0x1e1484d4da0>

In [21]:
#Here, we use Pillow library to resize the figure
from PIL import Image
import matplotlib.pyplot as plt

img = Image.open('pydata-book/ch03/stinkbug.png')
img1 = img
img.thumbnail((64,64), Image.ANTIALIAS) ## resizes image in-place
img1.thumbnail((256,256), Image.ANTIALIAS)
imgplot = plt.imshow(img)
img1plot = plt.imshow(img1)



In [4]:
%matplotlib inline
import matplotlib.pylab as plab
from numpy.random import randn
plab.plot(randn(1000).cumsum())


Out[4]:
[<matplotlib.lines.Line2D at 0x233d8e25278>]

使用命令历史

IPython 维护着一个位于硬盘上的小型数据库。其中含有你执行过的每条命令的文本。这样做有几个目的:

  • 只需很少的按键次数即可搜索、自动完成并执行之前已经执行过的命令

  • 在会话间持久化历史命令

  • 将输入/输出历史纪录到日志中去

搜索并重用命令历史

IPython倡导迭代、交互的开发模式:我们常常发现自己总是重复一些命令,假设我们已经执行了


In [5]:
#在ipython terminal执行
%run chapter03/simple01.py


1.375
<matplotlib.figure.Figure at 0x233d87c9588>

如果我们想在修改了simple01.py(当然也可以不改)后再次执行上面的操作,只需要输入 %run 命令的前几个字符并按下“ctrl+P”键或者向上箭头就会在命令历史的第一个发现它. (可能是因为我用的是git bash on windows,我自己并未测试成功书中的这个操作;但是在Linux中,我测试是有效的)。此外,ctrl-R可以实现部分增量搜索,跟Unix shell中的readline所提供的功能一样,并且ctrl-R将会循环搜索命令历史中每一条与输入相符的行。

例如,第一次ctrl-R后,我输入了c,ipython返回给我的是:

In [6]: c=a+b

I-search backward: c

再按依次ctrl-R,则变成了历史中含c这个关键字的另一个命令

In [6]: c = c + 1

I-search backward: c

输入和输出变量

IPython shell和jupyter notebook中,最近的两个输出分别保存在 _ 和 __ 两个变量中


In [1]:
a=3

In [2]:
a


Out[2]:
3

In [3]:
b=4

In [4]:
b


Out[4]:
4

In [5]:
__


Out[5]:
3

In [6]:
c=5
c


Out[6]:
5

In [7]:
_


Out[7]:
5

输入的文本被保存在名为 _iX 的变量中,其中X是输入行的行号。每个输入变量都有一个对应的输出变量 _X。例如:


In [8]:
foo = 'bar'

In [9]:
foo


Out[9]:
'bar'

In [10]:
_i9


Out[10]:
'foo'

In [11]:
_9


Out[11]:
'bar'

由于输入变量是字符串,因此可用python的exec关键字重新执行: exec _i9

有几个魔术命令可用于输入、输出历史。%hist用于打印全部或部分历史,可以选择是否带行号


In [13]:
%hist


a=3
a
b=4
b
__
c=5
c
_
foo = 'bar'
foo
_i9
_9
exec _i9
%hist

%reset 用于清空 interactive 命名空间,并可选择是否清空输入和输出缓存。%xdel 用于从IPython系统中移除特定对象的一切引用。


In [14]:
%reset


Once deleted, variables cannot be recovered. Proceed (y/[n])? y

In [16]:
a #由于上面已经清理了命名空间,所以python并不知道a是多少。


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-16-3f786850e387> in <module>()
----> 1 a

NameError: name 'a' is not defined

注意:在处理大数据集时,需注意IPython的输入和输出历史,它会导致所有对象引用都无法被垃圾收集器处理(即释放内存),即使用del关键字将变量从interactive命名空间中删除也不行。对于这种情况,谨慎地使用%xdel和%reset将有助于避免出现内存方面的问题。

记录输入和输出

IPython能够记录整个控制台会话,包括输入和输出。执行 %logstart 即可开始记录日志


In [17]:
%logstart


Activating auto-logging. Current session state plus future input saved.
Filename       : ipython_log.py
Mode           : rotate
Output logging : False
Raw input log  : False
Timestamping   : False
State          : active

IPython的日志功能开在任何时刻开气,以便记录整个会话。%logstart的具体选项可以参考帮助文档。此外还可以看看几个与之配套的命令:%logoff, %logon, %logstate, 以及 %logstop


In [18]:
%logstart?

与操作系统交互

IPython 的另一重要特点就是它跟操作系统的shell结合地非常紧密。即我们可以直接在IPython中实现标准的Windows或unix命令行活动。例如,执行shell命令、更改目录、将命令的执行结果保存在Python对象中等。此外,它还提供了shell命令别名以及目录书签等功能。

下表总结了用于调用shell命令的魔术命令及其语法。本笔记后面还会介绍这些功能。

命令 说明
!cmd 在系统shell中执行cmd
output = !cmd args 执行cmd,将stdout存放在output中
%alias alias_name cmd 为系统shell命令定义别名
%bookmark 使用IPtyhon的目录书签功能
%cd directory 将系统工作目录更改为directory
%pwd 返回当前工作目录
%pushed directory 将当前目录入栈,并转向目标目录 (这个不懂??)
%popd 弹出栈顶目录,并转向该目录
%dirs 返回一个含有当前目录栈的列表
%dhist 打印目录访问历史
%env 以dict形式返回系统环境变量

shell 命令和别名

在 IPython 中,以感叹号开头的命令行表示其后的所有内容需要在系统shell中执行。In other words, 我们可以删除文件(如rm或者del)、修改目录或执行任意其他处理过程。甚至我们还可启动一些将控制权从IPython手中夺走的进程(比如另外再启动一个Python解释器):

yang@comet-1.edu ~ 19:17:51 >ipython Python 3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:09:58) Type 'copyright', 'credits' or 'license' for more information IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

In [1]: !python Python 3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:09:58) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux Type "help", "copyright", "credits" or "license" for more information.

此外,还可将shell命令的控制台输出存放到变量中,只需要将 !开头的表达式赋值给变量即可。例如在Linux中


In [ ]:
In [4]: my_current_dir = !pwd

In [5]: my_current_dir
Out[5]: ['/home/ywfang']

In [ ]:
返回的python对象my_current_dir实际上是一个含有控制台输出结果的自定义列表类型

在使用!时,IPython 还允许使用当前环境中定义的python值。只需在变量名前面加上美元符号($)即可:


In [ ]:
#在ipython shell中
In [1]: foo = 'note*'

In [2]: !ls $foo
notebook.log

魔术命令 %alias 可以为shell命令自定义简称。例:

In [3]: %alias ll ls -l

In [4]: ll total 426 drwxr-xr-x 1 YWFANG 197609 0 9月 21 22:47 appendix-A -rw-r--r-- 1 YWFANG 197609 47204 10月 8 10:48 appendix-A-note.ipynb

可以一次执行多条命令,只需要将她们写在一行并以分号隔开(在Windows中,这个可能不可行,但是Linux可以通过)

In [3]: %alias test_fang (ls -l; cd ml; ls -l; cd ..)

In [4]: test_fang total 211 drwxr-xr-x 2 ywfang yun112 2 Aug 22 18:45 Desktop -rw-r--r-- 1 ywfang yun112 11148 Jul 2 22:02 bashrc-fang-20170703 drwxr-xr-x 9 ywfang yun112 9 Jul 7 01:45 glibc-2.14 drwxr-xr-x 3 ywfang yun112 3 Jul 2 23:10 intel -rwxr-xr-x 1 ywfang yun112 645 Sep 19 04:51 jupter_notebook drwxr-xr-x 3 ywfang yun112 5 Jul 7 18:51 materials drwxr-xr-x 20 ywfang yun112 21 Aug 22 18:02 miniconda3 drwxr-xr-x 3 ywfang yun112 3 Sep 4 18:39 ml -rw-r--r-- 1 ywfang yun112 826 Sep 30 08:35 notebook.log drwxr-xr-x 3 ywfang yun112 4 Aug 22 18:21 pwwork drwxr-xr-x 6 ywfang yun112 14 Aug 22 19:04 software drwxr-xr-x 5 ywfang yun112 6 Sep 4 18:56 tensorflow drwxr-xr-x 5 ywfang yun112 6 Sep 4 18:53 tf1.2-py3.6 drwxr-xr-x 5 ywfang yun112 6 Sep 4 18:54 tf12-py36 drwxr-xr-x 6 ywfang yun112 518 Jun 20 01:33 tool total 1 drwxr-xr-x 3 ywfang yun112 3 Sep 4 18:39 tensorflow

注意,IPython会在会话结束时立即"忘记"我们前面所定义的一切别名。如果要进行永久性的别名设置,需要使用配置系统。之后会进行介绍。

目录书签系统

IPython 有一个简单的目录书签系统,它使我们能保存常用目录的别名以便方便地快速跳转。比如,作为一个狂热的dropbox用户,为了能够快速地转到dropbox目录,可以定义一个书签:


In [11]:
%bookmark db D:\PhDinECNU #windows中的写法;如果是Linux,应该为/d/PhDinECNU/
%bookmark dt D:\temp

In [9]:
%cd db


(bookmark:db) -> D:\PhDinECNU
D:\PhDinECNU

定义好之后就可以在ipython shell(或jupyter notebook)中使用魔术命令%cd db来使用这些标签

如果书签的名字与当前工作目录中某个名字冲突时,可通过 -b 标记(起作用是覆写)使用书签目录。%bookmark的 -l 选项的作用是列出所有书签。


In [12]:
%bookmark -l


Current bookmarks:
db -> D:\PhDinECNU
dt -> D:\temp

软件开发工具

IPython 不仅是交互式环境和数据分析环境,同时也非常适合做开发环境。在数据分析应用程序中,最重要的是要拥有正确的代码。IPython继承了Python内置的 pdb 调试器。 此外,IPython 提供了一些简单易用的代码运行时间以及性能分析的工具。

交互式调试器

IPython的调试器增加了 pdb ,如 Tab 键自动完成、语法高亮、为异常跟踪的每条信息添加上下文参考等。调试代码的最佳时机之一就是错误刚发生的时候。 %debug 命令(在发生异常之后立即输入)将会条用那个“时候”调试器,并直接跳转到发生异常的那个 栈帧 (stack frame)


In [13]:
%reset


Once deleted, variables cannot be recovered. Proceed (y/[n])? y

In [14]:
%cd D:\PhDinECNU\readingnotes\readingnotes\machine-learning\McKinney-pythonbook2013


D:\PhDinECNU\readingnotes\readingnotes\machine-learning\McKinney-pythonbook2013

In [15]:
%run pydata-book/ch03/ipython_bug.py


---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
D:\PhDinECNU\readingnotes\readingnotes\machine-learning\McKinney-pythonbook2013\pydata-book\ch03\ipython_bug.py in <module>()
     13     throws_an_exception()
     14 
---> 15 calling_things()

D:\PhDinECNU\readingnotes\readingnotes\machine-learning\McKinney-pythonbook2013\pydata-book\ch03\ipython_bug.py in calling_things()
     11 def calling_things():
     12     works_fine()
---> 13     throws_an_exception()
     14 
     15 calling_things()

D:\PhDinECNU\readingnotes\readingnotes\machine-learning\McKinney-pythonbook2013\pydata-book\ch03\ipython_bug.py in throws_an_exception()
      7     a = 5
      8     b = 6
----> 9     assert(a + b == 10)
     10 
     11 def calling_things():

AssertionError: 

In [ ]:
%debug


> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(9)throws_an_exception()
      7     a = 5
      8     b = 6
----> 9     assert(a + b == 10)
     10 
     11 def calling_things():

ipdb> u
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(13)calling_things()
     11 def calling_things():
     12     works_fine()
---> 13     throws_an_exception()
     14 
     15 calling_things()

ipdb> d
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(9)throws_an_exception()
      7     a = 5
      8     b = 6
----> 9     assert(a + b == 10)
     10 
     11 def calling_things():

在这个 pdb 调试器中,我们可以执行任意Python 代码并查看各个栈帧中的一切对象和数据,这就相当于解释器还留了条后路给我们。默认是从最低级开始的,即错误发生的地方,在上面ipdb>后面输入u (up) 或者 d (down) 即可在栈跟踪的各级别之间进行切换。


In [ ]:
执行%pdb命令可以让IPython在出现异常之后直接调用调试器很多人都认为这一功能很实用

此外调试器还能为代码开发提供帮助,尤其当我们想设置断点或者对函数/脚本进行单步调试时。实现这个目的的方式如下所述。

用带有 -d 选项的 %run 命令,这将会在执行脚本文件中的代码之前先打开调试器。必须立即输入 s(或step)才能进入脚本:


In [ ]:
%run -d ./pydata-book/ch03/ipython_bug.py


Breakpoint 1 at d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py:1
NOTE: Enter 'c' at the ipdb>  prompt to continue execution.
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(1)<module>()
1---> 1 def works_fine():
      2     a = 5
      3     b = 6
      4     assert(a + b == 11)
      5 

ipdb> s
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(6)<module>()
      4     assert(a + b == 11)
      5 
----> 6 def throws_an_exception():
      7     a = 5
      8     b = 6

在此之后,上述文件执行的方式就全凭我们自己说了算了。比如说,在上面那个异常中,我们可以在调用 works_fine 方法的地方设置一个断点,然后输入 c (或者 continue) 使脚本一直运行下去直到该断点时为止。


In [ ]:
%run -d ./pydata-book/ch03/ipython_bug.py


Breakpoint 1 at d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py:1
NOTE: Enter 'c' at the ipdb>  prompt to continue execution.
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(1)<module>()
1---> 1 def works_fine():
      2     a = 5
      3     b = 6
      4     assert(a + b == 11)
      5 

ipdb> s
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(6)<module>()
      4     assert(a + b == 11)
      5 
----> 6 def throws_an_exception():
      7     a = 5
      8     b = 6

ipdb> b 12
Breakpoint 2 at d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py:12
ipdb> c
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(12)calling_things()
     10 
     11 def calling_things():
2--> 12     works_fine()
     13     throws_an_exception()
     14 

ipdb> n
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(13)calling_things()
     11 def calling_things():
2    12     works_fine()
---> 13     throws_an_exception()
     14 
     15 calling_things()

ipdb> s
--Call--
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(6)throws_an_exception()
      4     assert(a + b == 11)
      5 
----> 6 def throws_an_exception():
      7     a = 5
      8     b = 6

ipdb> n
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(7)throws_an_exception()
      5 
      6 def throws_an_exception():
----> 7     a = 5
      8     b = 6
      9     assert(a + b == 10)

ipdb> n
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(8)throws_an_exception()
      6 def throws_an_exception():
      7     a = 5
----> 8     b = 6
      9     assert(a + b == 10)
     10 

ipdb> n
> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(9)throws_an_exception()
      7     a = 5
      8     b = 6
----> 9     assert(a + b == 10)
     10 
     11 def calling_things():

ipdb> !a
5
ipdb> !b
6

如果想精通这个调试器,必须经过大量的实践。

虽然大部分 IDE 都会自带调试器,但是 IPython 中调试程序的方法往往会带来更高的生产率。

下面是常用的 IPython 调试器命令

命令 功能
h(elp) 显示命令列表
help command 显示 command 的文档
c(ontinue) 恢复程序的执行
q(uit) 推出调试器,不再执行任何代码
b(reak) number 在当前文件的第 number 行设置一个断点
b path/to/file.py:number 在制定文件的第 numbe 行设置一个断点
s(tep) 单步进入函数调用
n(ext) 执行当前行,并前进到当前级别的下一行
u(p)/d(own) 在函数调用栈中向上或者向下移动
a(rgs) 显示当前函数的参数
debug statement 在新的(递归)调试其中调用语句 statement
l(ist) statement 显示当前行,以及当前栈级别上的上下文参考代码
w(here) 打印当前位置的完整栈跟踪 (包括上下文参考代码)

调试器的其他使用场景

第一,使用 set_trace 这个特别的函数(以 pdb.set_trace 命名),这差不多可算作一种 “穷人的断点”(意思是这种断点方式很随便,是硬编码的)。下面这两个方法可能会在我们的日常工作中排上用场(我们也可像作者一样直接将其加入IPython配置中):

def set_trace(): from IPython.core.debugger import Pdb Pdb(color_scheme='Linux').set_trace(sys._getframe().f_back) def debug(f, *args, **kwargs): from IPython.core.debugger import Pdb pdb = Pdb(color_scheme = 'Linux') return pdb.runcall(f. *args, **kwargs)

第一个函数 set_trace 很简单。我们可以将其放在代码中任何希望停下来查看一番的地方,尤其是那些发生异常的地方:


In [ ]:
%run ./pydata-book/ch03/ipython_bug.py

In [ ]:
%debug


> d:\phdinecnu\readingnotes\readingnotes\machine-learning\mckinney-pythonbook2013\pydata-book\ch03\ipython_bug.py(9)throws_an_exception()
      7     a = 5
      8     b = 6
----> 9     assert(a + b == 10)
     10 
     11 def calling_things():

测试代码执行的时间: %time 和 %timeit

对于大规模数据分析,我们有时候需要对时间有个规划和预测。特别是对于其中最耗时的函数。IPython中可以轻松应对这种情况。

使用内置的 time 模块,以及 time.clock 和 time.time 函数 手工测试代码执行时间是令人烦闷的事情,因为我们必须编写许多一样的公式化代码:


In [ ]:
import time
start = time.time()
for i in range(iterations):
    #to do something
    elapsed_per = (time.time() - start ) / iterations

In [8]:

由于这是一个非常常用的功能,所以IPython提供了两个魔术工具 %time 和 %timeit 来自动完成该过程。%time 一次执行一条语句,然后报告总的执行时间。假设我们有一大堆字符串,希望对几个“能选出具有特殊前缀的字符串”的函数进行比较。下面是一个拥有60万字字符串的数组,以及两个不同的“能够选出其中以foo开头的字符串”的方法:


In [9]:
# a huge string array 

strings = ['foo', 'foobar', 'baz', 'qux', 'python', 'God']*100000

method1 = [x for x in strings if x.startswith('foo')]

method2 = [x for x in strings if x[:3]=='foo']

#These two methos look almost same, but their performances are different.

# See below, I use %time to calculate the excutable time.

In [10]:
%time method1 = [x for x in strings if x.startswith('foo')]


Wall time: 134 ms

In [11]:
%time method2 = [x for x in strings if x[:3]=='foo']


Wall time: 71.5 ms

Wall time是我们感兴趣的数字。所以,看上去第一个方法耗费了接近2倍的时间,但是这并非一个非常精确的结果。如果我们队相同语句多次执行%time的话,就会发现其结果是变化的。为了得到更加精确的结果,我们需要使用魔术函数 %timeit。对于任意语句,它会自动多次执行以产生一个非常精确的平均执行时间


In [12]:
%timeit method = [ x for x in strings if x.startswith('foo')]


107 ms ± 1.36 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [13]:
%timeit method = [x for x in strings if x[:0]=='foo']


41.3 ms ± 555 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

这个很平淡无奇的离子告诉我们这样一个道理:我们有必要了解Python标准库、Numpy、Pandas 以及 本书所用其他库的性能特点。在大型数据分析中,这些不起眼的毫秒数会不断累积产生蝴蝶效应。

对于那些执行时间非常短(甚至是微妙 1e-6 s;或者 纳秒 1e-9 s)的分析语句和函数而言,%timeit 是非常有用的。虽然对于单次执行而言,这些时间小到几乎可以忽略不计。但是我们只要举一个例子,就会发现我们很有必要“分秒必争”:

同样执行100万次一个20微妙的函数,所化时间要比一个5微妙的多出15秒。

在上面我运行的那个例子中,我们可以直接对两个字符串运算进行比较,以了解其性能特点:


In [1]:
x = 'foobar'

y = 'foo'

In [2]:
%timeit x.startswith(y)


273 ns ± 13.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [3]:
%timeit x[:3]==y


220 ns ± 23.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

基本性能分析: %run 和 %run -p

代码的性能分析跟代码执行时间密切关联,只是它关注的是耗费时间的位置。Python中,cProfile模块主要用来分析代码性能,它并非转为python设计。cProfile在执行一个程序代码或代码块时,会记录各函数所耗费的时间。

cProfile一般是在命令行上使用的,它将执行整个程序然后输出各个函数的执行时间。

下面,我们就给出了一个简单的例子:在一个循环中执行一些线性代数运算(即计算一个100 * 100 的矩阵的最大本征值绝对值)


In [4]:
import numpy as np
from numpy.linalg import eigvals

def run_experiment(niter = 100):
    K = 100
    results = []
    for _ in range(niter):
        mat = np.random.randn(K,K)
        max_eigenvalue = np.abs(eigvals(mat)).max()
        results.append(max_eigenvalue)
    return results
some_results = run_experiment()
print('Largest one we saw: %s' %(np.max(some_results)))


Largest one we saw: 12.3044734631

我们将上述脚本内容写入 simple03.py (目录为当前目录下的chapter03目录中),并且执行


In [1]:
!python -m cProfile chapter03/simple03.py


Largest one we saw: 11.5103409616
         53468 function calls (51355 primitive calls) in 1.069 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      325    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap>:103(release)
      149    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:143(__init__)
      149    0.001    0.000    0.005    0.000 <frozen importlib._bootstrap>:147(__enter__)
      149    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:151(__exit__)
      325    0.002    0.000    0.004    0.000 <frozen importlib._bootstrap>:157(_get_module_lock)
      147    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap>:176(cb)
      176    0.001    0.000    0.004    0.000 <frozen importlib._bootstrap>:194(_lock_unlock_module)
    200/1    0.001    0.000    0.308    0.308 <frozen importlib._bootstrap>:211(_call_with_frames_removed)
     1373    0.002    0.000    0.002    0.000 <frozen importlib._bootstrap>:222(_verbose_message)
       11    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:232(_requires_builtin_wrapper)
      139    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:307(__init__)
      139    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:311(__enter__)
      139    0.001    0.000    0.003    0.000 <frozen importlib._bootstrap>:318(__exit__)
      556    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:321(<genexpr>)
      118    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:35(_new_module)
      148    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:369(__init__)
      246    0.001    0.000    0.006    0.000 <frozen importlib._bootstrap>:403(cached)
      317    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:416(parent)
      139    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:424(has_location)
       11    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:433(spec_from_loader)
      139    0.002    0.000    0.011    0.000 <frozen importlib._bootstrap>:504(_init_module_attrs)
  139/137    0.001    0.000    0.033    0.000 <frozen importlib._bootstrap>:564(module_from_spec)
      147    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap>:58(__init__)
    139/1    0.002    0.000    0.308    0.308 <frozen importlib._bootstrap>:651(_load_unlocked)
      144    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:707(find_spec)
       11    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:728(create_module)
       11    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:736(exec_module)
       11    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:753(is_package)
      325    0.002    0.000    0.002    0.000 <frozen importlib._bootstrap>:78(acquire)
      133    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:780(find_spec)
      410    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:843(__enter__)
      410    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:847(__exit__)
      144    0.003    0.000    0.101    0.001 <frozen importlib._bootstrap>:870(_find_spec)
    149/1    0.001    0.000    0.311    0.311 <frozen importlib._bootstrap>:936(_find_and_load_unlocked)
    149/1    0.003    0.000    0.311    0.311 <frozen importlib._bootstrap>:966(_find_and_load)
   770/29    0.003    0.000    0.298    0.010 <frozen importlib._bootstrap>:997(_handle_fromlist)
       15    0.002    0.000    0.005    0.000 <frozen importlib._bootstrap_external>:1067(_path_hooks)
      303    0.001    0.000    0.005    0.000 <frozen importlib._bootstrap_external>:1080(_path_importer_cache)
        4    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:1102(_legacy_get_spec)
      133    0.002    0.000    0.094    0.001 <frozen importlib._bootstrap_external>:1117(_get_spec)
      133    0.000    0.000    0.094    0.001 <frozen importlib._bootstrap_external>:1149(find_spec)
       15    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap_external>:1196(__init__)
      120    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:1202(<genexpr>)
      128    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap_external>:1228(_get_spec)
      259    0.007    0.000    0.085    0.000 <frozen importlib._bootstrap_external>:1233(find_spec)
       15    0.001    0.000    0.004    0.000 <frozen importlib._bootstrap_external>:1281(_fill_cache)
       15    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:1310(<setcomp>)
       15    0.000    0.000    0.002    0.000 <frozen importlib._bootstrap_external>:1322(path_hook_for_FileFinder)
      236    0.003    0.000    0.009    0.000 <frozen importlib._bootstrap_external>:263(cache_from_source)
      128    0.001    0.000    0.006    0.000 <frozen importlib._bootstrap_external>:361(_get_cached)
      259    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:37(_relax_case)
      118    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap_external>:393(_check_name_wrapper)
      118    0.002    0.000    0.004    0.000 <frozen importlib._bootstrap_external>:430(_validate_bytecode_header)
      118    0.001    0.000    0.020    0.000 <frozen importlib._bootstrap_external>:485(_compile_bytecode)
      236    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap_external>:52(_r_long)
      128    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap_external>:524(spec_from_file_location)
     1274    0.005    0.000    0.015    0.000 <frozen importlib._bootstrap_external>:57(_path_join)
     1274    0.005    0.000    0.008    0.000 <frozen importlib._bootstrap_external>:59(<listcomp>)
      236    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap_external>:63(_path_split)
      118    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:669(create_module)
    118/1    0.001    0.000    0.308    0.308 <frozen importlib._bootstrap_external>:672(exec_module)
      118    0.002    0.000    0.072    0.001 <frozen importlib._bootstrap_external>:743(get_code)
      550    0.002    0.000    0.074    0.000 <frozen importlib._bootstrap_external>:75(_path_stat)
      118    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:800(__init__)
      118    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:825(get_filename)
      118    0.017    0.000    0.024    0.000 <frozen importlib._bootstrap_external>:830(get_data)
      118    0.000    0.000    0.017    0.000 <frozen importlib._bootstrap_external>:840(path_stats)
      173    0.001    0.000    0.024    0.000 <frozen importlib._bootstrap_external>:85(_path_is_mode_type)
       10    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:908(__init__)
       10    0.000    0.000    0.020    0.002 <frozen importlib._bootstrap_external>:919(create_module)
       10    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:927(exec_module)
      158    0.000    0.000    0.023    0.000 <frozen importlib._bootstrap_external>:94(_path_isfile)
       15    0.000    0.000    0.002    0.000 <frozen importlib._bootstrap_external>:99(_path_isdir)
        1    0.000    0.000    0.000    0.000 <string>:1(<module>)
        1    0.000    0.000    0.000    0.000 <string>:5(DefragResult)
        1    0.000    0.000    0.000    0.000 <string>:5(Match)
        1    0.000    0.000    0.000    0.000 <string>:5(Mismatch)
        1    0.000    0.000    0.000    0.000 <string>:5(ParseResult)
        1    0.000    0.000    0.000    0.000 <string>:5(SplitResult)
        1    0.000    0.000    0.000    0.000 <string>:5(TokenInfo)
        1    0.000    0.000    0.000    0.000 <string>:5(_LoggingWatcher)
        1    0.000    0.000    0.000    0.000 <string>:5(usage)
        1    0.000    0.000    0.000    0.000 __config__.py:3(<module>)
        1    0.000    0.000    0.000    0.000 __future__.py:48(<module>)
        1    0.000    0.000    0.000    0.000 __future__.py:78(_Feature)
        9    0.000    0.000    0.000    0.000 __future__.py:79(__init__)
        5    0.001    0.000    0.429    0.086 __init__.py:1(<module>)
        1    0.000    0.000    0.017    0.017 __init__.py:10(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:1008(FileHandler)
        1    0.000    0.000    0.308    0.308 __init__.py:106(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:1077(_StderrHandler)
        1    0.000    0.000    0.000    0.000 __init__.py:1083(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:1101(PlaceHolder)
        1    0.000    0.000    0.000    0.000 __init__.py:1143(Manager)
        1    0.000    0.000    0.000    0.000 __init__.py:1148(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:1251(Logger)
        1    0.000    0.000    0.000    0.000 __init__.py:1266(__init__)
       14    0.000    0.000    0.000    0.000 __init__.py:139(_check_size)
        1    0.000    0.000    0.015    0.015 __init__.py:15(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:151(py_object)
        1    0.000    0.000    0.000    0.000 __init__.py:1574(RootLogger)
        1    0.000    0.000    0.000    0.000 __init__.py:1580(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:1588(LoggerAdapter)
        1    0.000    0.000    0.000    0.000 __init__.py:160(c_short)
        1    0.000    0.000    0.000    0.000 __init__.py:164(c_ushort)
        1    0.000    0.000    0.000    0.000 __init__.py:168(c_long)
        1    0.000    0.000    0.000    0.000 __init__.py:172(c_ulong)
        1    0.000    0.000    0.000    0.000 __init__.py:189(c_float)
        2    0.000    0.000    0.000    0.000 __init__.py:190(_checkLevel)
        1    0.000    0.000    0.000    0.000 __init__.py:193(c_double)
        1    0.000    0.000    0.000    0.000 __init__.py:1960(NullHandler)
        1    0.000    0.000    0.000    0.000 __init__.py:197(c_longdouble)
        1    0.000    0.000    0.000    0.000 __init__.py:207(c_longlong)
        1    0.000    0.000    0.000    0.000 __init__.py:211(c_ulonglong)
        1    0.000    0.000    0.000    0.000 __init__.py:218(c_ubyte)
        1    0.000    0.000    0.000    0.000 __init__.py:219(_acquireLock)
        1    0.000    0.000    0.000    0.000 __init__.py:225(c_byte)
        1    0.000    0.000    0.000    0.000 __init__.py:228(_releaseLock)
        1    0.000    0.000    0.000    0.000 __init__.py:230(c_char)
        1    0.000    0.000    0.000    0.000 __init__.py:235(c_char_p)
        1    0.000    0.000    0.000    0.000 __init__.py:239(LogRecord)
        1    0.000    0.000    0.012    0.012 __init__.py:24(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:241(c_void_p)
        1    0.000    0.000    0.000    0.000 __init__.py:246(c_bool)
        1    0.000    0.000    0.000    0.000 __init__.py:251(c_wchar_p)
        1    0.000    0.000    0.000    0.000 __init__.py:256(c_wchar)
        1    0.000    0.000    0.000    0.000 __init__.py:259(_reset_cache)
        1    0.000    0.000    0.004    0.004 __init__.py:3(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:311(CDLL)
        2    0.000    0.000    0.000    0.000 __init__.py:332(__init__)
        2    0.000    0.000    0.000    0.000 __init__.py:342(_FuncPtr)
        8    0.000    0.000    0.006    0.001 __init__.py:357(namedtuple)
        1    0.000    0.000    0.000    0.000 __init__.py:358(__getattr__)
        1    0.000    0.000    0.000    0.000 __init__.py:365(__getitem__)
        1    0.000    0.000    0.000    0.000 __init__.py:371(PyDLL)
        1    0.000    0.000    0.000    0.000 __init__.py:378(PercentStyle)
        1    0.000    0.000    0.000    0.000 __init__.py:380(WinDLL)
        1    0.000    0.000    0.000    0.000 __init__.py:384(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:389(HRESULT)
        1    0.000    0.000    0.000    0.000 __init__.py:393(StrFormatStyle)
        1    0.000    0.000    0.000    0.000 __init__.py:402(OleDLL)
        1    0.000    0.000    0.000    0.000 __init__.py:402(StringTemplateStyle)
        1    0.000    0.000    0.012    0.012 __init__.py:41(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:411(LibraryLoader)
        4    0.000    0.000    0.000    0.000 __init__.py:412(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:415(__getattr__)
       37    0.000    0.000    0.000    0.000 __init__.py:420(<genexpr>)
       37    0.000    0.000    0.000    0.000 __init__.py:422(<genexpr>)
        1    0.000    0.000    0.000    0.000 __init__.py:426(Formatter)
        2    0.000    0.000    0.062    0.031 __init__.py:45(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:470(__init__)
        3    0.000    0.000    0.000    0.000 __init__.py:476(PYFUNCTYPE)
        3    0.000    0.000    0.000    0.000 __init__.py:477(CFunctionType)
        1    0.000    0.000    0.000    0.000 __init__.py:599(BufferingFormatter)
        1    0.000    0.000    0.000    0.000 __init__.py:641(Filter)
        1    0.000    0.000    0.000    0.000 __init__.py:678(Filterer)
        2    0.000    0.000    0.000    0.000 __init__.py:683(__init__)
        1    0.000    0.000    0.099    0.099 __init__.py:7(<module>)
        3    0.000    0.000    0.000    0.000 __init__.py:73(CFUNCTYPE)
        1    0.000    0.000    0.000    0.000 __init__.py:750(_addHandlerRef)
        1    0.000    0.000    0.000    0.000 __init__.py:760(Handler)
        1    0.000    0.000    0.000    0.000 __init__.py:769(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:798(createLock)
        1    0.000    0.000    0.006    0.006 __init__.py:88(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:949(StreamHandler)
        3    0.000    0.000    0.000    0.000 __init__.py:99(CFunctionType)
        1    0.000    0.000    0.000    0.000 _collections_abc.py:657(get)
        2    0.000    0.000    0.000    0.000 _collections_abc.py:664(__contains__)
       43    0.000    0.000    0.000    0.000 _compat_pickle.py:165(<genexpr>)
       86    0.000    0.000    0.000    0.000 _compat_pickle.py:167(<genexpr>)
        1    0.000    0.000    0.001    0.001 _compat_pickle.py:9(<module>)
        1    0.000    0.000    0.000    0.000 _compression.py:1(<module>)
        1    0.000    0.000    0.000    0.000 _compression.py:33(DecompressReader)
        1    0.000    0.000    0.000    0.000 _compression.py:9(BaseStream)
        1    0.000    0.000    0.000    0.000 _datasource.py:154(DataSource)
        1    0.000    0.000    0.000    0.000 _datasource.py:35(<module>)
        1    0.000    0.000    0.000    0.000 _datasource.py:50(_FileOpeners)
        1    0.000    0.000    0.000    0.000 _datasource.py:504(Repository)
        1    0.000    0.000    0.000    0.000 _datasource.py:74(__init__)
        1    0.000    0.000    0.000    0.000 _distributor_init.py:10(<module>)
        1    0.000    0.000    0.000    0.000 _endian.py:1(<module>)
        1    0.000    0.000    0.000    0.000 _endian.py:23(_swapped_meta)
        1    0.000    0.000    0.000    0.000 _endian.py:46(BigEndianStructure)
        1    0.000    0.000    0.000    0.000 _globals.py:17(<module>)
        1    0.000    0.000    0.000    0.000 _globals.py:33(ModuleDeprecationWarning)
        1    0.000    0.000    0.000    0.000 _globals.py:45(VisibleDeprecationWarning)
        1    0.000    0.000    0.000    0.000 _globals.py:56(_NoValue)
        1    0.000    0.000    0.000    0.000 _import_tools.py:1(<module>)
        1    0.000    0.000    0.000    0.000 _import_tools.py:340(PackageLoaderDebug)
        1    0.000    0.000    0.000    0.000 _import_tools.py:9(PackageLoader)
       98    0.000    0.000    0.000    0.000 _inspect.py:133(strseq)
       38    0.001    0.000    0.001    0.000 _inspect.py:142(formatargspec)
        7    0.000    0.000    0.000    0.000 _inspect.py:144(<lambda>)
        5    0.000    0.000    0.000    0.000 _inspect.py:145(<lambda>)
       60    0.000    0.000    0.000    0.000 _inspect.py:146(<lambda>)
       43    0.000    0.000    0.000    0.000 _inspect.py:15(ismethod)
       43    0.000    0.000    0.000    0.000 _inspect.py:28(isfunction)
       38    0.000    0.000    0.000    0.000 _inspect.py:43(iscode)
       38    0.000    0.000    0.000    0.000 _inspect.py:67(getargs)
        1    0.000    0.000    0.000    0.000 _inspect.py:7(<module>)
       43    0.000    0.000    0.001    0.000 _inspect.py:98(getargspec)
        1    0.000    0.000    0.000    0.000 _internal.py:200(dummy_ctype)
        1    0.000    0.000    0.000    0.000 _internal.py:210(_getintp_ctype)
        1    0.000    0.000    0.000    0.000 _internal.py:233(_missing_ctypes)
        1    0.000    0.000    0.000    0.000 _internal.py:240(_ctypes)
        1    0.000    0.000    0.037    0.037 _internal.py:6(<module>)
        1    0.000    0.000    0.000    0.000 _internal.py:671(TooHardError)
        1    0.000    0.000    0.000    0.000 _internal.py:674(AxisError)
       51    0.000    0.000    0.001    0.000 _internal.py:703(_ufunc_doc_signature_formatter)
       78    0.000    0.000    0.000    0.000 _internal.py:714(<genexpr>)
        1    0.000    0.000    0.000    0.000 _iotools.py:155(LineSplitter)
        1    0.000    0.000    0.000    0.000 _iotools.py:251(NameValidator)
        1    0.000    0.000    0.000    0.000 _iotools.py:3(<module>)
        1    0.000    0.000    0.000    0.000 _iotools.py:445(ConverterError)
        1    0.000    0.000    0.000    0.000 _iotools.py:453(ConverterLockError)
        1    0.000    0.000    0.000    0.000 _iotools.py:461(ConversionWarning)
        1    0.000    0.000    0.000    0.000 _iotools.py:474(StringConverter)
      101    0.000    0.000    0.001    0.000 _methods.py:25(_amax)
      200    0.001    0.000    0.003    0.000 _methods.py:40(_all)
        1    0.000    0.000    0.000    0.000 _methods.py:5(<module>)
        1    0.000    0.000    0.000    0.000 _polybase.py:19(ABCPolyBase)
        1    0.000    0.000    0.000    0.000 _polybase.py:8(<module>)
        1    0.000    0.000    0.000    0.000 _version.py:18(NumpyVersion)
        1    0.000    0.000    0.000    0.000 _version.py:7(<module>)
       11    0.000    0.000    0.000    0.000 _weakrefset.py:16(__init__)
       11    0.000    0.000    0.000    0.000 _weakrefset.py:20(__enter__)
       11    0.000    0.000    0.000    0.000 _weakrefset.py:26(__exit__)
       40    0.000    0.000    0.000    0.000 _weakrefset.py:36(__init__)
       11    0.000    0.000    0.000    0.000 _weakrefset.py:52(_commit_removals)
       19    0.000    0.000    0.000    0.000 _weakrefset.py:58(__iter__)
       15    0.000    0.000    0.000    0.000 _weakrefset.py:70(__contains__)
       19    0.000    0.000    0.000    0.000 _weakrefset.py:81(add)
       10    0.000    0.000    0.001    0.000 abc.py:132(__new__)
       10    0.000    0.000    0.000    0.000 abc.py:135(<setcomp>)
        7    0.000    0.000    0.001    0.000 abc.py:151(register)
     12/7    0.000    0.000    0.001    0.000 abc.py:194(__subclasscheck__)
       54    0.000    0.000    0.000    0.000 abc.py:9(abstractmethod)
        1    0.001    0.001    0.241    0.241 add_newdocs.py:10(<module>)
        1    0.000    0.000    0.000    0.000 argparse.py:1005(_HelpAction)
        1    0.000    0.000    0.000    0.000 argparse.py:1024(_VersionAction)
        1    0.000    0.000    0.000    0.000 argparse.py:1050(_SubParsersAction)
        1    0.000    0.000    0.000    0.000 argparse.py:1052(_ChoicesPseudoAction)
        1    0.000    0.000    0.000    0.000 argparse.py:109(_AttributeHolder)
        1    0.000    0.000    0.000    0.000 argparse.py:1146(FileType)
        1    0.000    0.000    0.000    0.000 argparse.py:1200(Namespace)
        1    0.000    0.000    0.000    0.000 argparse.py:1220(_ActionsContainer)
        1    0.000    0.000    0.000    0.000 argparse.py:150(HelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:1527(_ArgumentGroup)
        1    0.000    0.000    0.000    0.000 argparse.py:1561(_MutuallyExclusiveGroup)
        1    0.000    0.000    0.000    0.000 argparse.py:1581(ArgumentParser)
        1    0.000    0.000    0.000    0.000 argparse.py:200(_Section)
        1    0.000    0.000    0.001    0.001 argparse.py:62(<module>)
        1    0.000    0.000    0.000    0.000 argparse.py:637(RawDescriptionHelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:648(RawTextHelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:659(ArgumentDefaultsHelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:676(MetavarTypeHelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:709(ArgumentError)
        1    0.000    0.000    0.000    0.000 argparse.py:729(ArgumentTypeError)
        1    0.000    0.000    0.000    0.000 argparse.py:738(Action)
        1    0.000    0.000    0.000    0.000 argparse.py:829(_StoreAction)
        1    0.000    0.000    0.000    0.000 argparse.py:864(_StoreConstAction)
        1    0.000    0.000    0.000    0.000 argparse.py:887(_StoreTrueAction)
        1    0.000    0.000    0.000    0.000 argparse.py:904(_StoreFalseAction)
        1    0.000    0.000    0.000    0.000 argparse.py:921(_AppendAction)
        1    0.000    0.000    0.000    0.000 argparse.py:958(_AppendConstAction)
        1    0.000    0.000    0.000    0.000 argparse.py:984(_CountAction)
        1    0.000    0.000    0.000    0.000 arraypad.py:5(<module>)
        1    0.000    0.000    0.000    0.000 arrayprint.py:368(_recursive_guard)
        1    0.000    0.000    0.000    0.000 arrayprint.py:378(decorating_function)
        1    0.000    0.000    0.004    0.004 arrayprint.py:5(<module>)
        1    0.000    0.000    0.000    0.000 arrayprint.py:602(FloatFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:711(IntegerFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:731(LongFloatFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:761(LongComplexFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:772(ComplexFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:789(DatetimeFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:810(TimedeltaFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:837(SubArrayFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:847(StructureFormat)
        1    0.000    0.000    0.000    0.000 arraysetops.py:27(<module>)
        1    0.000    0.000    0.000    0.000 arrayterator.py:20(Arrayterator)
        1    0.000    0.000    0.000    0.000 arrayterator.py:9(<module>)
        1    0.000    0.000    0.000    0.000 ast.py:229(NodeVisitor)
        1    0.000    0.000    0.000    0.000 ast.py:26(<module>)
        1    0.000    0.000    0.000    0.000 ast.py:266(NodeTransformer)
        1    0.000    0.000    0.000    0.000 bisect.py:1(<module>)
        1    0.000    0.000    0.000    0.000 bz2.py:32(BZ2File)
        1    0.000    0.000    0.004    0.004 bz2.py:5(<module>)
        1    0.000    0.000    0.021    0.021 case.py:1(<module>)
        1    0.000    0.000    0.000    0.000 case.py:128(_BaseTestCaseContext)
       10    0.000    0.000    0.000    0.000 case.py:1315(_deprecate)
        1    0.000    0.000    0.000    0.000 case.py:1337(FunctionTestCase)
        1    0.000    0.000    0.000    0.000 case.py:137(_AssertRaisesBaseContext)
        1    0.000    0.000    0.000    0.000 case.py:1395(_SubTest)
        1    0.000    0.000    0.000    0.000 case.py:184(_AssertRaisesContext)
        1    0.000    0.000    0.000    0.000 case.py:221(_AssertWarnsContext)
        1    0.000    0.000    0.000    0.000 case.py:25(SkipTest)
        1    0.000    0.000    0.000    0.000 case.py:278(_CapturingHandler)
        1    0.000    0.000    0.000    0.000 case.py:297(_AssertLogsContext)
        1    0.000    0.000    0.000    0.000 case.py:33(_ShouldStop)
        1    0.000    0.000    0.000    0.000 case.py:341(TestCase)
        1    0.000    0.000    0.000    0.000 case.py:38(_UnexpectedSuccess)
        1    0.000    0.000    0.000    0.000 case.py:44(_Outcome)
        1    0.000    0.000    0.000    0.000 chebyshev.py:2036(Chebyshev)
        1    0.000    0.000    0.000    0.000 chebyshev.py:87(<module>)
        6    0.000    0.000    0.000    0.000 contextlib.py:129(contextmanager)
        1    0.000    0.000    0.000    0.000 copyreg.py:12(pickle)
        1    0.000    0.000    0.000    0.000 copyreg.py:22(constructor)
        1    0.000    0.000    0.000    0.000 core.py:1001(_MaskedBinaryOperation)
       18    0.000    0.000    0.001    0.000 core.py:1021(__init__)
        1    0.000    0.000    0.000    0.000 core.py:1153(_DomainedBinaryOperation)
        6    0.000    0.000    0.000    0.000 core.py:1174(__init__)
        4    0.000    0.000    0.000    0.000 core.py:124(doc_note)
       43    0.000    0.000    0.002    0.000 core.py:143(get_object_signature)
        1    0.000    0.000    0.000    0.000 core.py:160(MAError)
        1    0.000    0.000    0.000    0.000 core.py:168(MaskError)
        1    0.000    0.000    0.000    0.000 core.py:200(<listcomp>)
        1    0.000    0.000    0.000    0.000 core.py:202(<listcomp>)
        1    0.000    0.000    0.006    0.006 core.py:21(<module>)
        1    0.000    0.000    0.000    0.000 core.py:2400(_MaskedPrintOption)
        1    0.000    0.000    0.000    0.000 core.py:2406(__init__)
        9    0.000    0.000    0.000    0.000 core.py:2569(_arraymethod)
        1    0.000    0.000    0.000    0.000 core.py:2617(MaskedIterator)
        1    0.000    0.000    0.000    0.000 core.py:2731(MaskedArray)
        1    0.000    0.000    0.000    0.000 core.py:6046(mvoid)
        1    0.000    0.000    0.000    0.000 core.py:6248(MaskedConstant)
        1    0.000    0.000    0.000    0.000 core.py:6255(__new__)
        1    0.000    0.000    0.000    0.000 core.py:6258(__array_finalize__)
        1    0.000    0.000    0.000    0.000 core.py:6361(_extrema_operation)
        2    0.000    0.000    0.000    0.000 core.py:6370(__init__)
        1    0.000    0.000    0.000    0.000 core.py:6482(_frommethod)
       26    0.000    0.000    0.002    0.000 core.py:6493(__init__)
       26    0.000    0.000    0.002    0.000 core.py:6498(getdoc)
        1    0.000    0.000    0.000    0.000 core.py:7960(_convert2ma)
        8    0.000    0.000    0.000    0.000 core.py:7973(__init__)
        8    0.000    0.000    0.000    0.000 core.py:7978(getdoc)
        1    0.000    0.000    0.000    0.000 core.py:826(_DomainCheckInterval)
        3    0.000    0.000    0.000    0.000 core.py:835(__init__)
        1    0.000    0.000    0.000    0.000 core.py:851(_DomainTan)
        1    0.000    0.000    0.000    0.000 core.py:859(__init__)
        1    0.000    0.000    0.000    0.000 core.py:869(_DomainSafeDivide)
        6    0.000    0.000    0.000    0.000 core.py:875(__init__)
        1    0.000    0.000    0.000    0.000 core.py:890(_DomainGreater)
        3    0.000    0.000    0.000    0.000 core.py:896(__init__)
        1    0.000    0.000    0.000    0.000 core.py:906(_DomainGreaterEqual)
        2    0.000    0.000    0.000    0.000 core.py:912(__init__)
        1    0.000    0.000    0.000    0.000 core.py:922(_MaskedUnaryOperation)
        1    0.000    0.000    0.000    0.000 core.py:93(MaskedArrayFutureWarning)
       27    0.000    0.000    0.001    0.000 core.py:940(__init__)
        1    0.000    0.000    0.000    0.000 ctypeslib.py:177(_ndptr)
       12    0.000    0.000    0.000    0.000 ctypeslib.py:330(prep_simple)
        1    0.000    0.000    0.000    0.000 ctypeslib.py:51(<module>)
        1    0.000    0.000    0.000    0.000 datetime.py:1023(time)
        2    0.000    0.000    0.000    0.000 datetime.py:1048(__new__)
        1    0.000    0.000    0.000    0.000 datetime.py:1360(datetime)
        3    0.000    0.000    0.000    0.000 datetime.py:1368(__new__)
        1    0.000    0.000    0.000    0.000 datetime.py:1949(timezone)
        3    0.000    0.000    0.000    0.000 datetime.py:1972(_create)
       35    0.000    0.000    0.000    0.000 datetime.py:261(_check_int_field)
        5    0.000    0.000    0.000    0.000 datetime.py:278(_check_date_fields)
        5    0.000    0.000    0.000    0.000 datetime.py:291(_check_time_fields)
        5    0.000    0.000    0.000    0.000 datetime.py:308(_check_tzinfo_arg)
        1    0.000    0.000    0.000    0.000 datetime.py:336(timedelta)
        9    0.000    0.000    0.001    0.000 datetime.py:355(__new__)
        3    0.000    0.000    0.000    0.000 datetime.py:40(_days_before_year)
        5    0.000    0.000    0.000    0.000 datetime.py:45(_days_in_month)
        1    0.000    0.000    0.002    0.002 datetime.py:5(<module>)
        1    0.000    0.000    0.000    0.000 datetime.py:530(__neg__)
        1    0.000    0.000    0.000    0.000 datetime.py:658(date)
        2    0.000    0.000    0.000    0.000 datetime.py:688(__new__)
        1    0.000    0.000    0.000    0.000 datetime.py:953(tzinfo)
        1    0.000    0.000    0.038    0.038 decorators.py:15(<module>)
        1    0.000    0.000    0.000    0.000 defchararray.py:1669(chararray)
        1    0.000    0.000    0.000    0.000 defchararray.py:17(<module>)
        1    0.000    0.000    0.002    0.002 defmatrix.py:1(<module>)
        1    0.000    0.000    0.000    0.000 defmatrix.py:174(matrix)
        1    0.000    0.000    0.000    0.000 difflib.py:1703(HtmlDiff)
        1    0.000    0.000    0.002    0.002 difflib.py:27(<module>)
        1    0.000    0.000    0.000    0.000 difflib.py:43(SequenceMatcher)
        1    0.000    0.000    0.000    0.000 difflib.py:751(Differ)
        1    0.000    0.000    0.000    0.000 einsumfunc.py:4(<module>)
        2    0.000    0.000    0.000    0.000 enum.py:114(__prepare__)
        2    0.000    0.000    0.001    0.000 enum.py:124(__new__)
        2    0.000    0.000    0.000    0.000 enum.py:135(<dictcomp>)
        2    0.000    0.000    0.000    0.000 enum.py:160(<setcomp>)
        6    0.000    0.000    0.000    0.000 enum.py:179(<genexpr>)
       11    0.000    0.000    0.000    0.000 enum.py:20(_is_descriptor)
      682    0.002    0.000    0.005    0.000 enum.py:265(__call__)
       15    0.000    0.000    0.000    0.000 enum.py:28(_is_dunder)
        2    0.000    0.000    0.000    0.000 enum.py:310(__getattr__)
        2    0.000    0.000    0.000    0.000 enum.py:335(__members__)
       25    0.000    0.000    0.000    0.000 enum.py:351(__setattr__)
       15    0.000    0.000    0.000    0.000 enum.py:36(_is_sunder)
        2    0.000    0.000    0.002    0.001 enum.py:364(_create_)
        6    0.000    0.000    0.000    0.000 enum.py:417(_get_mixins_)
        2    0.000    0.000    0.000    0.000 enum.py:462(_find_new_)
      680    0.001    0.000    0.002    0.000 enum.py:515(__new__)
       51    0.000    0.000    0.000    0.000 enum.py:592(name)
        3    0.000    0.000    0.000    0.000 enum.py:597(value)
        2    0.000    0.000    0.002    0.001 enum.py:602(_convert)
        2    0.000    0.000    0.000    0.000 enum.py:623(<listcomp>)
       11    0.000    0.000    0.000    0.000 enum.py:628(<lambda>)
        2    0.000    0.000    0.000    0.000 enum.py:65(__init__)
       15    0.000    0.000    0.000    0.000 enum.py:70(__setitem__)
        3    0.000    0.000    0.001    0.000 enum.py:758(_missing_)
        3    0.000    0.000    0.001    0.000 enum.py:765(_create_pseudo_member_)
       30    0.000    0.000    0.001    0.000 enum.py:795(__or__)
      310    0.002    0.000    0.005    0.000 enum.py:801(__and__)
       18    0.000    0.000    0.000    0.000 enum.py:820(_high_bit)
        3    0.000    0.000    0.001    0.000 enum.py:837(_decompose)
        3    0.000    0.000    0.000    0.000 enum.py:855(<listcomp>)
        7    0.000    0.000    0.000    0.000 enum.py:866(<lambda>)
       24    0.000    0.000    0.000    0.000 enum.py:872(_power_of_two)
        1    0.001    0.001    0.002    0.002 extras.py:10(<module>)
        1    0.000    0.000    0.000    0.000 extras.py:1453(MAxisConcatenator)
        1    0.000    0.000    0.000    0.000 extras.py:1478(mr_class)
        1    0.000    0.000    0.000    0.000 extras.py:1494(__init__)
        1    0.000    0.000    0.000    0.000 extras.py:218(_fromnxfunction)
        9    0.000    0.000    0.000    0.000 extras.py:238(__init__)
        9    0.000    0.000    0.000    0.000 extras.py:242(getdoc)
        1    0.000    0.000    0.000    0.000 extras.py:273(_fromnxfunction_single)
        1    0.000    0.000    0.000    0.000 extras.py:291(_fromnxfunction_seq)
        1    0.000    0.000    0.000    0.000 extras.py:304(_fromnxfunction_args)
        1    0.000    0.000    0.000    0.000 extras.py:329(_fromnxfunction_allargs)
        1    0.000    0.000    0.004    0.004 fftpack.py:32(<module>)
        1    0.000    0.000    0.000    0.000 financial.py:10(<module>)
        1    0.000    0.000    0.002    0.002 fnmatch.py:11(<module>)
        1    0.000    0.000    0.000    0.000 format.py:149(<module>)
      100    0.001    0.000    0.004    0.000 fromnumeric.py:1973(all)
        1    0.000    0.000    0.000    0.000 fromnumeric.py:2174(amax)
        1    0.000    0.000    0.002    0.002 fromnumeric.py:3(<module>)
        2    0.000    0.000    0.002    0.001 function_base.py:1(<module>)
        1    0.000    0.000    0.000    0.000 function_base.py:2527(vectorize)
      275    0.003    0.000    0.009    0.000 function_base.py:4519(add_newdoc)
       30    0.001    0.000    0.001    0.000 functools.py:44(update_wrapper)
        2    0.000    0.000    0.000    0.000 functools.py:448(lru_cache)
        2    0.000    0.000    0.000    0.000 functools.py:479(decorating_function)
       28    0.000    0.000    0.000    0.000 functools.py:74(wraps)
       30    0.000    0.000    0.000    0.000 getlimits.py:26(_fr1)
        1    0.000    0.000    0.001    0.001 getlimits.py:3(<module>)
        1    0.000    0.000    0.000    0.000 getlimits.py:305(finfo)
        1    0.000    0.000    0.000    0.000 getlimits.py:455(iinfo)
        5    0.000    0.000    0.000    0.000 getlimits.py:507(__init__)
        2    0.000    0.000    0.000    0.000 getlimits.py:532(max)
        1    0.000    0.000    0.000    0.000 getlimits.py:62(MachArLike)
        6    0.000    0.000    0.001    0.000 getlimits.py:65(__init__)
       36    0.000    0.000    0.000    0.000 getlimits.py:69(<lambda>)
       30    0.000    0.000    0.000    0.000 getlimits.py:70(<lambda>)
       14    0.000    0.000    0.001    0.000 hashlib.py:116(__get_openssl_constructor)
        1    0.000    0.000    0.004    0.004 hashlib.py:54(<module>)
        8    0.000    0.000    0.001    0.000 hashlib.py:73(__get_builtin_constructor)
        1    0.000    0.000    0.000    0.000 helper.py:230(_FFTCache)
        2    0.000    0.000    0.000    0.000 helper.py:251(__init__)
        1    0.000    0.000    0.000    0.000 helper.py:4(<module>)
        1    0.000    0.000    0.000    0.000 hermite.py:1810(Hermite)
        1    0.000    0.000    0.000    0.000 hermite.py:59(<module>)
        1    0.000    0.000    0.000    0.000 hermite_e.py:1807(HermiteE)
        1    0.000    0.000    0.000    0.000 hermite_e.py:59(<module>)
        1    0.000    0.000    0.011    0.011 index_tricks.py:1(<module>)
        2    0.000    0.000    0.000    0.000 index_tricks.py:159(__init__)
        1    0.000    0.000    0.000    0.000 index_tricks.py:231(AxisConcatenator)
        3    0.000    0.000    0.000    0.000 index_tricks.py:241(__init__)
        1    0.000    0.000    0.000    0.000 index_tricks.py:356(RClass)
        1    0.000    0.000    0.000    0.000 index_tricks.py:451(__init__)
        1    0.000    0.000    0.000    0.000 index_tricks.py:456(CClass)
        1    0.000    0.000    0.000    0.000 index_tricks.py:481(__init__)
        1    0.000    0.000    0.000    0.000 index_tricks.py:486(ndenumerate)
        1    0.000    0.000    0.000    0.000 index_tricks.py:536(ndindex)
        1    0.000    0.000    0.000    0.000 index_tricks.py:614(IndexExpression)
        2    0.000    0.000    0.000    0.000 index_tricks.py:658(__init__)
        1    0.000    0.000    0.000    0.000 index_tricks.py:98(nd_grid)
        1    0.000    0.000    0.000    0.000 info.py:156(<module>)
        1    0.000    0.000    0.000    0.000 info.py:184(<module>)
        1    0.000    0.000    0.000    0.000 info.py:34(<module>)
        1    0.000    0.000    0.000    0.000 info.py:83(<module>)
        1    0.000    0.000    0.000    0.000 info.py:86(<module>)
        1    0.000    0.000    0.000    0.000 laguerre.py:1760(Laguerre)
        1    0.000    0.000    0.000    0.000 laguerre.py:59(<module>)
        1    0.000    0.000    0.000    0.000 legendre.py:1790(Legendre)
        1    0.000    0.000    0.000    0.000 legendre.py:83(<module>)
        1    0.000    0.000    0.003    0.003 linalg.py:10(<module>)
      100    0.000    0.000    0.000    0.000 linalg.py:101(get_linalg_error_extobj)
      100    0.001    0.000    0.001    0.000 linalg.py:106(_makearray)
      300    0.001    0.000    0.001    0.000 linalg.py:111(isComplexType)
      100    0.000    0.000    0.000    0.000 linalg.py:124(_realType)
      100    0.000    0.000    0.001    0.000 linalg.py:127(_complexType)
      100    0.001    0.000    0.002    0.000 linalg.py:139(_commonType)
      100    0.000    0.000    0.000    0.000 linalg.py:198(_assertRankAtLeast2)
      100    0.001    0.000    0.001    0.000 linalg.py:209(_assertNdSquareness)
      100    0.001    0.000    0.003    0.000 linalg.py:214(_assertFinite)
        1    0.000    0.000    0.000    0.000 linalg.py:43(LinAlgError)
        1    0.000    0.000    0.000    0.000 linalg.py:76(_determine_error_states)
      100    0.692    0.007    0.705    0.007 linalg.py:819(eigvals)
        1    0.000    0.000    0.009    0.009 linecache.py:6(<module>)
        1    0.000    0.000    0.002    0.002 loader.py:1(<module>)
        1    0.000    0.000    0.000    0.000 loader.py:23(_FailedTest)
        1    0.000    0.000    0.000    0.000 loader.py:66(TestLoader)
        1    0.000    0.000    0.000    0.000 loader.py:76(__init__)
        1    0.000    0.000    0.000    0.000 lzma.py:38(LZMAFile)
        1    0.000    0.000    0.002    0.002 lzma.py:9(<module>)
        1    0.000    0.000    0.000    0.000 machar.py:17(MachAr)
        1    0.000    0.000    0.000    0.000 machar.py:7(<module>)
        1    0.000    0.000    0.012    0.012 main.py:1(<module>)
        1    0.000    0.000    0.000    0.000 main.py:49(TestProgram)
        1    0.000    0.000    0.000    0.000 memmap.py:1(<module>)
        1    0.000    0.000    0.000    0.000 memmap.py:20(memmap)
        1    0.000    0.000    0.000    0.000 mixins.py:1(<module>)
       19    0.000    0.000    0.000    0.000 mixins.py:20(_binary_method)
       13    0.000    0.000    0.000    0.000 mixins.py:30(_reflected_binary_method)
       12    0.000    0.000    0.000    0.000 mixins.py:40(_inplace_binary_method)
       12    0.000    0.000    0.000    0.000 mixins.py:48(_numeric_methods)
        4    0.000    0.000    0.000    0.000 mixins.py:55(_unary_method)
        1    0.000    0.000    0.000    0.000 mixins.py:63(NDArrayOperatorsMixin)
        1    0.000    0.000    0.000    0.000 nanfunctions.py:21(<module>)
        1    0.000    0.000    0.000    0.000 nosetester.py:110(NoseTester)
       19    0.000    0.000    0.001    0.000 nosetester.py:152(__init__)
       19    0.000    0.000    0.001    0.000 nosetester.py:518(_numpy_tester)
        1    0.000    0.000    0.000    0.000 nosetester.py:6(<module>)
        1    0.000    0.000    0.006    0.006 npyio.py:1(<module>)
        1    0.000    0.000    0.000    0.000 npyio.py:104(NpzFile)
        1    0.000    0.000    0.000    0.000 npyio.py:40(BagObj)
       19    0.000    0.000    0.000    0.000 ntpath.py:121(splitdrive)
       19    0.000    0.000    0.001    0.000 ntpath.py:199(split)
       19    0.000    0.000    0.001    0.000 ntpath.py:240(dirname)
       19    0.000    0.000    0.000    0.000 ntpath.py:33(_get_bothseps)
        1    0.000    0.000    0.000    0.000 ntpath.py:43(normcase)
        1    0.000    0.000    0.000    0.000 numbers.py:12(Number)
        1    0.000    0.000    0.000    0.000 numbers.py:147(Real)
        1    0.000    0.000    0.000    0.000 numbers.py:267(Rational)
        1    0.000    0.000    0.000    0.000 numbers.py:294(Integral)
        1    0.000    0.000    0.000    0.000 numbers.py:32(Complex)
        1    0.000    0.000    0.001    0.001 numbers.py:6(<module>)
        1    0.000    0.000    0.017    0.017 numeric.py:1(<module>)
        2    0.000    0.000    0.000    0.000 numeric.py:1942(set_string_function)
        6    0.000    0.000    0.000    0.000 numeric.py:2667(seterr)
        6    0.000    0.000    0.000    0.000 numeric.py:2767(geterr)
        1    0.000    0.000    0.000    0.000 numeric.py:2992(_unspecified)
        1    0.000    0.000    0.000    0.000 numeric.py:2997(errstate)
        3    0.000    0.000    0.000    0.000 numeric.py:3060(__init__)
        3    0.000    0.000    0.000    0.000 numeric.py:3064(__enter__)
        3    0.000    0.000    0.000    0.000 numeric.py:3069(__exit__)
        1    0.000    0.000    0.000    0.000 numeric.py:3075(_setdef)
        3    0.000    0.000    0.001    0.000 numeric.py:367(extend_all)
        1    0.000    0.000    0.000    0.000 numeric.py:374(<listcomp>)
      100    0.000    0.000    0.000    0.000 numeric.py:463(asarray)
      100    0.000    0.000    0.001    0.000 numeric.py:534(asanyarray)
        1    0.000    0.000    0.000    0.000 numeric.py:76(ComplexWarning)
        1    0.000    0.000    0.001    0.001 numerictypes.py:120(<listcomp>)
       72    0.000    0.000    0.000    0.000 numerictypes.py:127(english_lower)
       38    0.000    0.000    0.000    0.000 numerictypes.py:154(english_upper)
       12    0.000    0.000    0.000    0.000 numerictypes.py:181(english_capitalize)
       23    0.000    0.000    0.000    0.000 numerictypes.py:216(_evalname)
       26    0.000    0.000    0.000    0.000 numerictypes.py:229(bitname)
        1    0.000    0.000    0.000    0.000 numerictypes.py:285(_add_types)
        1    0.000    0.000    0.001    0.001 numerictypes.py:301(_add_aliases)
        1    0.000    0.000    0.000    0.000 numerictypes.py:338(_add_integer_aliases)
        1    0.000    0.000    0.000    0.000 numerictypes.py:379(_set_up_aliases)
        1    0.000    0.000    0.000    0.000 numerictypes.py:428(_construct_char_code_lookup)
       30    0.000    0.000    0.000    0.000 numerictypes.py:443(_add_array_type)
        1    0.000    0.000    0.000    0.000 numerictypes.py:451(_set_array_types)
        1    0.000    0.000    0.000    0.000 numerictypes.py:765(_typedict)
        1    0.000    0.000    0.000    0.000 numerictypes.py:781(_construct_lookups)
        1    0.000    0.000    0.007    0.007 numerictypes.py:82(<module>)
        1    0.000    0.000    0.000    0.000 numerictypes.py:957(_register_types)
        1    0.000    0.000    0.000    0.000 os.py:1067(__subclasshook__)
        3    0.000    0.000    0.000    0.000 os.py:664(__getitem__)
        2    0.000    0.000    0.000    0.000 os.py:672(__setitem__)
        2    0.000    0.000    0.000    0.000 os.py:678(__delitem__)
        2    0.000    0.000    0.000    0.000 os.py:720(<lambda>)
        9    0.000    0.000    0.000    0.000 os.py:728(check_str)
        7    0.000    0.000    0.000    0.000 os.py:734(encodekey)
        1    0.000    0.000    0.000    0.000 parse.py:126(_ResultMixinStr)
        1    0.000    0.000    0.000    0.000 parse.py:134(_ResultMixinBytes)
        1    0.000    0.000    0.000    0.000 parse.py:142(_NetlocResultMixinBase)
        1    0.000    0.000    0.000    0.000 parse.py:173(_NetlocResultMixinStr)
        1    0.000    0.000    0.000    0.000 parse.py:203(_NetlocResultMixinBytes)
        1    0.000    0.000    0.003    0.003 parse.py:28(<module>)
        1    0.000    0.000    0.000    0.000 parse.py:308(DefragResult)
        1    0.000    0.000    0.000    0.000 parse.py:316(SplitResult)
        1    0.000    0.000    0.000    0.000 parse.py:321(ParseResult)
        1    0.000    0.000    0.000    0.000 parse.py:327(DefragResultBytes)
        1    0.000    0.000    0.000    0.000 parse.py:335(SplitResultBytes)
        1    0.000    0.000    0.000    0.000 parse.py:340(ParseResultBytes)
        1    0.000    0.000    0.000    0.000 parse.py:346(_fix_result_transcoding)
        1    0.000    0.000    0.000    0.000 parse.py:723(Quoter)
        1    0.000    0.000    0.012    0.012 pathlib.py:1(<module>)
        1    0.000    0.000    0.000    0.000 pathlib.py:107(_WindowsFlavour)
       27    0.000    0.000    0.000    0.000 pathlib.py:119(<genexpr>)
       27    0.000    0.000    0.000    0.000 pathlib.py:120(<genexpr>)
        1    0.000    0.000    0.000    0.000 pathlib.py:126(<setcomp>)
        1    0.000    0.000    0.000    0.000 pathlib.py:127(<setcomp>)
        1    0.000    0.000    0.000    0.000 pathlib.py:1424(PosixPath)
        1    0.000    0.000    0.000    0.000 pathlib.py:1427(WindowsPath)
        1    0.000    0.000    0.000    0.000 pathlib.py:274(_PosixFlavour)
        1    0.000    0.000    0.000    0.000 pathlib.py:377(_Accessor)
        1    0.000    0.000    0.001    0.001 pathlib.py:382(_NormalAccessor)
       10    0.000    0.000    0.000    0.000 pathlib.py:384(_wrap_strfunc)
        3    0.000    0.000    0.000    0.000 pathlib.py:390(_wrap_binary_strfunc)
        1    0.000    0.000    0.000    0.000 pathlib.py:44(_Flavour)
        1    0.000    0.000    0.000    0.000 pathlib.py:467(_Selector)
        2    0.000    0.000    0.000    0.000 pathlib.py:48(__init__)
        1    0.000    0.000    0.000    0.000 pathlib.py:492(_TerminatingSelector)
        1    0.000    0.000    0.000    0.000 pathlib.py:498(_PreciseSelector)
        1    0.000    0.000    0.000    0.000 pathlib.py:514(_WildcardSelector)
        1    0.000    0.000    0.000    0.000 pathlib.py:537(_RecursiveWildcardSelector)
        1    0.000    0.000    0.000    0.000 pathlib.py:574(_PathParents)
        1    0.000    0.000    0.000    0.000 pathlib.py:602(PurePath)
        1    0.000    0.000    0.000    0.000 pathlib.py:957(PurePosixPath)
        1    0.000    0.000    0.000    0.000 pathlib.py:962(PureWindowsPath)
        1    0.000    0.000    0.000    0.000 pathlib.py:970(Path)
        1    0.000    0.000    0.002    0.002 pickle.py:181(<listcomp>)
        1    0.000    0.000    0.000    0.000 pickle.py:184(_Framer)
        1    0.000    0.000    0.000    0.000 pickle.py:220(_Unframer)
        1    0.000    0.000    0.008    0.008 pickle.py:24(<module>)
        1    0.000    0.000    0.000    0.000 pickle.py:345(_Pickler)
        1    0.000    0.000    0.000    0.000 pickle.py:64(PickleError)
        1    0.000    0.000    0.000    0.000 pickle.py:68(PicklingError)
        1    0.000    0.000    0.000    0.000 pickle.py:75(UnpicklingError)
        1    0.000    0.000    0.000    0.000 pickle.py:88(_Stop)
        1    0.000    0.000    0.000    0.000 pickle.py:986(_Unpickler)
        1    0.000    0.000    0.000    0.000 polynomial.py:1601(Polynomial)
        1    0.000    0.000    0.000    0.000 polynomial.py:22(RankWarning)
        1    0.000    0.000    0.008    0.008 polynomial.py:4(<module>)
        1    0.000    0.000    0.005    0.005 polynomial.py:56(<module>)
        1    0.000    0.000    0.000    0.000 polynomial.py:939(poly1d)
        1    0.000    0.000    0.000    0.000 polyutils.py:45(<module>)
        1    0.000    0.000    0.000    0.000 polyutils.py:58(RankWarning)
        1    0.000    0.000    0.000    0.000 polyutils.py:62(PolyError)
        1    0.000    0.000    0.000    0.000 polyutils.py:66(PolyDomainError)
        1    0.000    0.000    0.000    0.000 polyutils.py:79(PolyBase)
        1    0.000    0.000    0.000    0.000 posixpath.py:11(<module>)
        1    0.000    0.000    0.000    0.000 pprint.py:35(<module>)
        1    0.000    0.000    0.000    0.000 pprint.py:72(_safe_key)
        1    0.000    0.000    0.000    0.000 pprint.py:98(PrettyPrinter)
        1    0.000    0.000    0.014    0.014 py3k.py:4(<module>)
        1    0.000    0.000    0.008    0.008 random.py:38(<module>)
        1    0.000    0.000    0.000    0.000 random.py:663(SystemRandom)
        1    0.000    0.000    0.000    0.000 random.py:71(Random)
        1    0.000    0.000    0.000    0.000 random.py:87(__init__)
        1    0.000    0.000    0.000    0.000 random.py:96(seed)
      102    0.000    0.000    0.001    0.000 re.py:169(match)
       19    0.000    0.000    0.024    0.001 re.py:231(compile)
        1    0.000    0.000    0.000    0.000 re.py:249(escape)
      121    0.000    0.000    0.025    0.000 re.py:286(_compile)
        1    0.000    0.000    0.000    0.000 records.py:215(record)
        1    0.000    0.000    0.000    0.000 records.py:298(recarray)
        1    0.000    0.000    0.000    0.000 records.py:36(<module>)
        1    0.000    0.000    0.000    0.000 records.py:83(format_parser)
        1    0.000    0.000    0.014    0.014 result.py:1(<module>)
        3    0.000    0.000    0.000    0.000 result.py:12(failfast)
        1    0.000    0.000    0.000    0.000 result.py:24(TestResult)
        1    0.000    0.000    0.008    0.008 runner.py:1(<module>)
        1    0.000    0.000    0.000    0.000 runner.py:120(TextTestRunner)
        1    0.000    0.000    0.000    0.000 runner.py:13(_WritelnDecorator)
        1    0.000    0.000    0.000    0.000 runner.py:29(TextTestResult)
        1    0.000    0.000    0.000    0.000 scimath.py:17(<module>)
        2    0.000    0.000    0.000    0.000 shape_base.py:1(<module>)
        1    0.000    0.000    0.000    0.000 shape_base.py:364(_Recurser)
        1    0.000    0.000    0.017    0.017 shutil.py:5(<module>)
        1    0.000    0.000    0.000    0.000 shutil.py:55(Error)
        1    0.000    0.000    0.000    0.000 shutil.py:58(SameFileError)
        1    0.000    0.000    0.000    0.000 shutil.py:61(SpecialFileError)
        1    0.000    0.000    0.000    0.000 shutil.py:65(ExecError)
        1    0.000    0.000    0.000    0.000 shutil.py:68(ReadError)
        1    0.000    0.000    0.000    0.000 shutil.py:71(RegistryError)
        1    0.000    0.000    0.002    0.002 signal.py:1(<module>)
       28    0.000    0.000    0.000    0.000 signal.py:10(<lambda>)
       29    0.000    0.000    0.000    0.000 signal.py:17(<lambda>)
        1    0.000    0.000    0.006    0.006 signals.py:1(<module>)
        1    0.000    0.000    0.000    0.000 signals.py:9(_InterruptHandler)
        1    0.000    0.000    1.069    1.069 simple03.py:1(<module>)
        1    0.002    0.002    0.758    0.758 simple03.py:4(run_experiment)
      248    0.001    0.000    0.001    0.000 sre_compile.py:102(fixup)
       29    0.000    0.000    0.004    0.000 sre_compile.py:223(_compile_charset)
       29    0.002    0.000    0.004    0.000 sre_compile.py:250(_optimize_charset)
       13    0.000    0.000    0.000    0.000 sre_compile.py:376(_mk_bitmap)
       13    0.000    0.000    0.000    0.000 sre_compile.py:378(<listcomp>)
        6    0.000    0.000    0.000    0.000 sre_compile.py:381(_bytes_to_codes)
       30    0.000    0.000    0.001    0.000 sre_compile.py:388(_simple)
        1    0.000    0.000    0.000    0.000 sre_compile.py:393(_generate_overlap_table)
      8/6    0.000    0.000    0.000    0.000 sre_compile.py:414(_get_literal_prefix)
        5    0.000    0.000    0.000    0.000 sre_compile.py:441(_get_charset_prefix)
       16    0.000    0.000    0.001    0.000 sre_compile.py:482(_compile_info)
       32    0.000    0.000    0.000    0.000 sre_compile.py:539(isstring)
       16    0.000    0.000    0.013    0.001 sre_compile.py:542(_code)
       16    0.000    0.000    0.024    0.001 sre_compile.py:557(compile)
    66/16    0.002    0.000    0.012    0.001 sre_compile.py:64(_compile)
       66    0.000    0.000    0.000    0.000 sre_parse.py:111(__init__)
       97    0.000    0.000    0.000    0.000 sre_parse.py:159(__len__)
      236    0.001    0.000    0.001    0.000 sre_parse.py:163(__getitem__)
       30    0.000    0.000    0.000    0.000 sre_parse.py:167(__setitem__)
      154    0.000    0.000    0.001    0.000 sre_parse.py:171(append)
   107/57    0.001    0.000    0.001    0.000 sre_parse.py:173(getwidth)
       16    0.000    0.000    0.000    0.000 sre_parse.py:223(__init__)
      653    0.001    0.000    0.001    0.000 sre_parse.py:232(__next)
      193    0.000    0.000    0.000    0.000 sre_parse.py:248(match)
      520    0.001    0.000    0.002    0.000 sre_parse.py:253(get)
        8    0.000    0.000    0.000    0.000 sre_parse.py:266(getuntil)
      101    0.000    0.000    0.000    0.000 sre_parse.py:285(tell)
        1    0.000    0.000    0.000    0.000 sre_parse.py:287(seek)
        8    0.000    0.000    0.000    0.000 sre_parse.py:294(_class_escape)
       13    0.000    0.000    0.000    0.000 sre_parse.py:342(_escape)
    30/16    0.000    0.000    0.008    0.001 sre_parse.py:407(_parse_sub)
    34/16    0.002    0.000    0.008    0.001 sre_parse.py:470(_parse)
       16    0.000    0.000    0.000    0.000 sre_parse.py:76(__init__)
       54    0.000    0.000    0.000    0.000 sre_parse.py:81(groups)
       16    0.000    0.000    0.001    0.000 sre_parse.py:828(fix_flags)
       11    0.000    0.000    0.000    0.000 sre_parse.py:84(opengroup)
       16    0.000    0.000    0.010    0.001 sre_parse.py:844(parse)
       11    0.000    0.000    0.000    0.000 sre_parse.py:96(closegroup)
        1    0.000    0.000    0.000    0.000 stride_tricks.py:15(DummyArray)
        1    0.000    0.000    0.000    0.000 stride_tricks.py:7(<module>)
        1    0.000    0.000    0.007    0.007 string.py:15(<module>)
        1    0.000    0.000    0.000    0.000 string.py:169(Formatter)
        1    0.000    0.000    0.000    0.000 string.py:55(_TemplateMetaclass)
        1    0.000    0.000    0.007    0.007 string.py:65(__init__)
        1    0.000    0.000    0.000    0.000 string.py:77(Template)
        1    0.000    0.000    0.000    0.000 suite.py:1(<module>)
        1    0.000    0.000    0.000    0.000 suite.py:16(BaseTestSuite)
        1    0.000    0.000    0.000    0.000 suite.py:270(_ErrorHolder)
        1    0.000    0.000    0.000    0.000 suite.py:317(_DebugResult)
        1    0.000    0.000    0.000    0.000 suite.py:92(TestSuite)
        1    0.000    0.000    0.000    0.000 tempfile.py:136(_RandomNameSequence)
        1    0.000    0.000    0.010    0.010 tempfile.py:24(<module>)
        1    0.000    0.000    0.000    0.000 tempfile.py:416(_TemporaryFileCloser)
        1    0.000    0.000    0.000    0.000 tempfile.py:459(_TemporaryFileWrapper)
        1    0.000    0.000    0.000    0.000 tempfile.py:629(SpooledTemporaryFile)
        1    0.000    0.000    0.000    0.000 tempfile.py:777(TemporaryDirectory)
        1    0.000    0.000    0.000    0.000 threading.py:1(<module>)
        1    0.000    0.000    0.000    0.000 threading.py:1158(Timer)
        1    0.000    0.000    0.000    0.000 threading.py:1188(_MainThread)
        1    0.000    0.000    0.000    0.000 threading.py:1190(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:1207(_DummyThread)
        1    0.000    0.000    0.000    0.000 threading.py:203(Condition)
        1    0.000    0.000    0.000    0.000 threading.py:215(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:239(__enter__)
        1    0.000    0.000    0.000    0.000 threading.py:242(__exit__)
        1    0.000    0.000    0.000    0.000 threading.py:254(_is_owned)
        1    0.000    0.000    0.000    0.000 threading.py:334(notify)
        1    0.000    0.000    0.000    0.000 threading.py:357(notify_all)
        1    0.000    0.000    0.000    0.000 threading.py:369(Semaphore)
        1    0.000    0.000    0.000    0.000 threading.py:449(BoundedSemaphore)
        1    0.000    0.000    0.000    0.000 threading.py:487(Event)
        1    0.000    0.000    0.000    0.000 threading.py:498(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:512(set)
        1    0.000    0.000    0.000    0.000 threading.py:566(Barrier)
        1    0.000    0.000    0.000    0.000 threading.py:720(BrokenBarrierError)
        1    0.000    0.000    0.000    0.000 threading.py:738(Thread)
        2    0.000    0.000    0.000    0.000 threading.py:74(RLock)
        1    0.000    0.000    0.000    0.000 threading.py:757(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:87(_RLock)
        1    0.000    0.000    0.000    0.000 threading.py:890(_set_ident)
        1    0.000    0.000    0.000    0.000 threading.py:893(_set_tstate_lock)
        1    0.000    0.000    0.000    0.000 token.py:1(<module>)
        1    0.000    0.000    0.000    0.000 token.py:74(<dictcomp>)
       20    0.000    0.000    0.000    0.000 tokenize.py:112(group)
        1    0.000    0.000    0.000    0.000 tokenize.py:113(any)
        2    0.000    0.000    0.000    0.000 tokenize.py:114(maybe)
        3    0.000    0.000    0.001    0.000 tokenize.py:137(_all_string_prefixes)
       24    0.000    0.000    0.000    0.000 tokenize.py:148(<listcomp>)
        1    0.000    0.000    0.007    0.007 tokenize.py:21(<module>)
        1    0.000    0.000    0.000    0.000 tokenize.py:217(TokenError)
        1    0.000    0.000    0.000    0.000 tokenize.py:219(StopTokenizing)
        1    0.000    0.000    0.000    0.000 tokenize.py:222(Untokenizer)
        1    0.000    0.000    0.000    0.000 tokenize.py:99(TokenInfo)
        1    0.000    0.000    0.010    0.010 traceback.py:1(<module>)
        1    0.000    0.000    0.000    0.000 traceback.py:223(FrameSummary)
        1    0.000    0.000    0.000    0.000 traceback.py:310(StackSummary)
        1    0.000    0.000    0.000    0.000 traceback.py:426(TracebackException)
        1    0.000    0.000    0.000    0.000 twodim_base.py:3(<module>)
        1    0.000    0.000    0.186    0.186 type_check.py:3(<module>)
       54    0.000    0.000    0.000    0.000 types.py:135(__get__)
        3    0.000    0.000    0.000    0.000 ufunclike.py:14(_deprecate_out_named_y)
        1    0.000    0.000    0.000    0.000 ufunclike.py:5(<module>)
        1    0.000    0.000    0.001    0.001 util.py:1(<module>)
        1    0.000    0.000    0.003    0.003 utils.py:1(<module>)
        3    0.000    0.000    0.000    0.000 utils.py:118(deprecate)
        1    0.000    0.000    0.000    0.000 utils.py:1589(WarningMessage)
        1    0.000    0.000    0.000    0.000 utils.py:1622(WarningManager)
        1    0.000    0.000    0.000    0.000 utils.py:1849(IgnoreException)
        1    0.000    0.000    0.000    0.000 utils.py:1890(clear_and_catch_warnings)
        1    0.000    0.000    0.000    0.000 utils.py:1955(suppress_warnings)
        1    0.000    0.000    0.036    0.036 utils.py:4(<module>)
        1    0.000    0.000    0.000    0.000 utils.py:41(KnownFailureException)
        3    0.000    0.000    0.000    0.000 utils.py:52(_set_function_name)
        1    0.000    0.000    0.000    0.000 utils.py:57(_Deprecate)
        3    0.000    0.000    0.000    0.000 utils.py:69(__init__)
        3    0.000    0.000    0.000    0.000 utils.py:74(__call__)
        1    0.000    0.000    0.000    0.000 utils.py:997(SafeEval)
        1    0.000    0.000    0.000    0.000 version.py:5(<module>)
        4    0.000    0.000    0.005    0.001 warnings.py:119(filterwarnings)
        1    0.000    0.000    0.000    0.000 warnings.py:143(simplefilter)
        5    0.000    0.000    0.000    0.000 warnings.py:159(_add_filter)
        1    0.000    0.000    0.000    0.000 warnings.py:428(__init__)
        1    0.000    0.000    0.000    0.000 warnings.py:449(__enter__)
        1    0.000    0.000    0.000    0.000 warnings.py:468(__exit__)
        1    0.000    0.000    0.000    0.000 weakref.py:102(__init__)
        1    0.000    0.000    0.000    0.000 weakref.py:288(update)
        1    0.000    0.000    0.000    0.000 weakref.py:354(__init__)
       45    0.000    0.000    0.000    0.000 {built-in method __new__ of type object at 0x0000000064C7B3F0}
        1    0.000    0.000    0.000    0.000 {built-in method _ctypes.LoadLibrary}
        2    0.000    0.000    0.000    0.000 {built-in method _ctypes.POINTER}
       50    0.000    0.000    0.000    0.000 {built-in method _ctypes.sizeof}
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_md5}
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha1}
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha224}
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha256}
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha384}
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha512}
      118    0.000    0.000    0.000    0.000 {built-in method _imp._fix_co_filename}
      882    0.001    0.000    0.001    0.000 {built-in method _imp.acquire_lock}
       11    0.001    0.000    0.001    0.000 {built-in method _imp.create_builtin}
       10    0.015    0.001    0.020    0.002 {built-in method _imp.create_dynamic}
       11    0.000    0.000    0.000    0.000 {built-in method _imp.exec_builtin}
       10    0.000    0.000    0.000    0.000 {built-in method _imp.exec_dynamic}
       51    0.000    0.000    0.000    0.000 {built-in method _imp.is_builtin}
      133    0.000    0.000    0.000    0.000 {built-in method _imp.is_frozen}
      882    0.001    0.000    0.001    0.000 {built-in method _imp.release_lock}
       16    0.000    0.000    0.000    0.000 {built-in method _sre.compile}
      328    0.000    0.000    0.000    0.000 {built-in method _sre.getlower}
       18    0.000    0.000    0.000    0.000 {built-in method _struct.calcsize}
        1    0.000    0.000    0.000    0.000 {built-in method _thread._set_sentinel}
      299    0.001    0.000    0.001    0.000 {built-in method _thread.allocate_lock}
      651    0.001    0.000    0.001    0.000 {built-in method _thread.get_ident}
        7    0.000    0.000    0.000    0.000 {built-in method _warnings._filters_mutated}
        1    0.000    0.000    0.000    0.000 {built-in method atexit.register}
  314/312    0.008    0.000    0.019    0.000 {built-in method builtins.__build_class__}
    315/7    0.001    0.000    0.296    0.042 {built-in method builtins.__import__}
       72    0.000    0.000    0.000    0.000 {built-in method builtins.abs}
      141    0.001    0.000    0.002    0.000 {built-in method builtins.any}
        2    0.000    0.000    0.000    0.000 {built-in method builtins.callable}
      308    0.000    0.000    0.000    0.000 {built-in method builtins.chr}
        1    0.000    0.000    0.000    0.000 {built-in method builtins.dir}
       45    0.000    0.000    0.000    0.000 {built-in method builtins.divmod}
    127/1    0.005    0.000    1.069    1.069 {built-in method builtins.exec}
     2136    0.004    0.000    0.004    0.000 {built-in method builtins.getattr}
      359    0.000    0.000    0.000    0.000 {built-in method builtins.globals}
     2298    0.004    0.000    0.004    0.000 {built-in method builtins.hasattr}
     2181    0.003    0.000    0.003    0.000 {built-in method builtins.isinstance}
  498/485    0.001    0.000    0.001    0.000 {built-in method builtins.issubclass}
1333/1301    0.001    0.000    0.002    0.000 {built-in method builtins.len}
      106    0.000    0.000    0.000    0.000 {built-in method builtins.max}
      250    0.000    0.000    0.000    0.000 {built-in method builtins.min}
      175    0.000    0.000    0.000    0.000 {built-in method builtins.ord}
        1    0.000    0.000    0.000    0.000 {built-in method builtins.print}
       68    0.000    0.000    0.000    0.000 {built-in method builtins.repr}
        9    0.000    0.000    0.000    0.000 {built-in method builtins.round}
      242    0.000    0.000    0.000    0.000 {built-in method builtins.setattr}
        2    0.000    0.000    0.000    0.000 {built-in method builtins.vars}
      236    0.000    0.000    0.000    0.000 {built-in method from_bytes}
      118    0.018    0.000    0.018    0.000 {built-in method marshal.loads}
        1    0.000    0.000    0.000    0.000 {built-in method math.exp}
        2    0.000    0.000    0.000    0.000 {built-in method math.log}
        1    0.000    0.000    0.000    0.000 {built-in method math.sqrt}
      403    0.000    0.000    0.000    0.000 {built-in method nt.fspath}
       40    0.000    0.000    0.000    0.000 {built-in method nt.getcwd}
       15    0.002    0.000    0.002    0.000 {built-in method nt.listdir}
        4    0.000    0.000    0.000    0.000 {built-in method nt.putenv}
      550    0.073    0.000    0.073    0.000 {built-in method nt.stat}
      268    0.001    0.000    0.001    0.000 {built-in method numpy.core.multiarray.add_docstring}
      274    0.001    0.000    0.001    0.000 {built-in method numpy.core.multiarray.array}
       21    0.000    0.000    0.000    0.000 {built-in method numpy.core.multiarray.empty}
        2    0.000    0.000    0.000    0.000 {built-in method numpy.core.multiarray.set_string_function}
        1    0.000    0.000    0.000    0.000 {built-in method numpy.core.multiarray.set_typeDict}
       14    0.000    0.000    0.000    0.000 {built-in method numpy.core.umath.geterrobj}
        7    0.000    0.000    0.000    0.000 {built-in method numpy.core.umath.seterrobj}
       27    0.000    0.000    0.000    0.000 {built-in method sys._getframe}
        1    0.000    0.000    0.000    0.000 {built-in method sys.getwindowsversion}
        1    0.000    0.000    0.000    0.000 {built-in method time.time}
        1    0.000    0.000    0.000    0.000 {function Random.seed at 0x0000021A69F88950}
       37    0.000    0.000    0.000    0.000 {method '__contains__' of 'frozenset' objects}
        1    0.000    0.000    0.000    0.000 {method '__enter__' of '_thread.lock' objects}
        1    0.000    0.000    0.000    0.000 {method '__exit__' of '_thread.lock' objects}
       11    0.000    0.000    0.000    0.000 {method '__subclasses__' of 'type' objects}
       11    0.000    0.000    0.000    0.000 {method '__subclasshook__' of 'object' objects}
        1    0.000    0.000    0.000    0.000 {method 'acquire' of '_thread.RLock' objects}
        2    0.000    0.000    0.000    0.000 {method 'acquire' of '_thread.lock' objects}
      468    0.001    0.000    0.001    0.000 {method 'add' of 'set' objects}
      200    0.001    0.000    0.004    0.000 {method 'all' of 'numpy.ndarray' objects}
     1632    0.002    0.000    0.002    0.000 {method 'append' of 'list' objects}
      100    0.001    0.000    0.001    0.000 {method 'astype' of 'numpy.ndarray' objects}
       18    0.000    0.000    0.000    0.000 {method 'bit_length' of 'int' objects}
        6    0.000    0.000    0.000    0.000 {method 'cast' of 'memoryview' objects}
        3    0.000    0.000    0.000    0.000 {method 'clear' of 'dict' objects}
       30    0.000    0.000    0.000    0.000 {method 'copy' of 'numpy.ndarray' objects}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
      138    0.000    0.000    0.000    0.000 {method 'endswith' of 'str' objects}
       87    0.000    0.000    0.000    0.000 {method 'extend' of 'list' objects}
      111    0.000    0.000    0.000    0.000 {method 'find' of 'bytearray' objects}
        1    0.000    0.000    0.000    0.000 {method 'find' of 'str' objects}
        4    0.000    0.000    0.000    0.000 {method 'find_loader' of 'zipimport.zipimporter' objects}
      405    0.001    0.000    0.001    0.000 {method 'format' of 'str' objects}
      597    0.001    0.000    0.001    0.000 {method 'get' of 'dict' objects}
       25    0.000    0.000    0.000    0.000 {method 'get' of 'mappingproxy' objects}
        5    0.000    0.000    0.000    0.000 {method 'insert' of 'list' objects}
       45    0.000    0.000    0.000    0.000 {method 'isidentifier' of 'str' objects}
       28    0.000    0.000    0.000    0.000 {method 'isupper' of 'str' objects}
       11    0.000    0.000    0.000    0.000 {method 'items' of 'collections.OrderedDict' objects}
       34    0.000    0.000    0.000    0.000 {method 'items' of 'dict' objects}
     1699    0.002    0.000    0.003    0.000 {method 'join' of 'str' objects}
       19    0.000    0.000    0.000    0.000 {method 'keys' of 'dict' objects}
      321    0.000    0.000    0.000    0.000 {method 'lower' of 'str' objects}
      102    0.000    0.000    0.000    0.000 {method 'match' of '_sre.SRE_Pattern' objects}
      100    0.000    0.000    0.002    0.000 {method 'max' of 'numpy.ndarray' objects}
        2    0.000    0.000    0.000    0.000 {method 'mro' of 'type' objects}
      181    0.000    0.000    0.000    0.000 {method 'partition' of 'str' objects}
       41    0.000    0.000    0.000    0.000 {method 'pop' of 'dict' objects}
      100    0.050    0.000    0.050    0.000 {method 'randn' of 'mtrand.RandomState' objects}
      118    0.008    0.000    0.008    0.000 {method 'read' of '_io.FileIO' objects}
      301    0.003    0.000    0.003    0.000 {method 'reduce' of 'numpy.ufunc' objects}
        1    0.000    0.000    0.000    0.000 {method 'release' of '_thread.RLock' objects}
       11    0.000    0.000    0.000    0.000 {method 'remove' of 'list' objects}
       11    0.000    0.000    0.000    0.000 {method 'remove' of 'set' objects}
       35    0.000    0.000    0.000    0.000 {method 'replace' of 'str' objects}
      938    0.001    0.000    0.001    0.000 {method 'rpartition' of 'str' objects}
      236    0.001    0.000    0.001    0.000 {method 'rsplit' of 'str' objects}
     2804    0.003    0.000    0.003    0.000 {method 'rstrip' of 'str' objects}
        3    0.000    0.000    0.000    0.000 {method 'setdefault' of 'dict' objects}
        5    0.000    0.000    0.000    0.000 {method 'setter' of 'property' objects}
        5    0.000    0.000    0.000    0.000 {method 'sort' of 'list' objects}
        7    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
      287    0.000    0.000    0.000    0.000 {method 'startswith' of 'str' objects}
      268    0.001    0.000    0.001    0.000 {method 'strip' of 'str' objects}
        6    0.000    0.000    0.000    0.000 {method 'tolist' of 'memoryview' objects}
       13    0.000    0.000    0.000    0.000 {method 'translate' of 'bytearray' objects}
      110    0.000    0.000    0.000    0.000 {method 'translate' of 'str' objects}
        1    0.000    0.000    0.000    0.000 {method 'union' of 'set' objects}
       47    0.000    0.000    0.000    0.000 {method 'update' of 'dict' objects}
       43    0.000    0.000    0.000    0.000 {method 'upper' of 'str' objects}
        1    0.000    0.000    0.000    0.000 {method 'values' of 'dict' objects}
        1    0.000    0.000    0.000    0.000 {method 'view' of 'numpy.ndarray' objects}


即使这里不明白脚本里面具体做的事情,那也没有关系,反正先这么照着书里先做着,感受下cProfile的作用。

我们可以看到,输出结果是按照函数名排序的(ordered by standard name)。这样就比较看出哪些地方是最花时间的,因此通常用 -s 标记,换一种排序的规则:


In [2]:
!python -m cProfile -s cumulative chapter03/simple03.py


Largest one we saw: 12.0184268139
         53468 function calls (51355 primitive calls) in 1.055 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    127/1    0.005    0.000    1.055    1.055 {built-in method builtins.exec}
        1    0.000    0.000    1.055    1.055 simple03.py:1(<module>)
        1    0.002    0.002    0.747    0.747 simple03.py:4(run_experiment)
      100    0.683    0.007    0.695    0.007 linalg.py:819(eigvals)
        5    0.001    0.000    0.430    0.086 __init__.py:1(<module>)
    149/1    0.003    0.000    0.308    0.308 <frozen importlib._bootstrap>:966(_find_and_load)
    149/1    0.001    0.000    0.308    0.308 <frozen importlib._bootstrap>:936(_find_and_load_unlocked)
    139/1    0.002    0.000    0.306    0.306 <frozen importlib._bootstrap>:651(_load_unlocked)
    118/1    0.001    0.000    0.305    0.305 <frozen importlib._bootstrap_external>:672(exec_module)
    200/1    0.001    0.000    0.305    0.305 <frozen importlib._bootstrap>:211(_call_with_frames_removed)
        1    0.000    0.000    0.305    0.305 __init__.py:106(<module>)
   770/29    0.003    0.000    0.294    0.010 <frozen importlib._bootstrap>:997(_handle_fromlist)
    315/7    0.001    0.000    0.292    0.042 {built-in method builtins.__import__}
        1    0.000    0.000    0.245    0.245 add_newdocs.py:10(<module>)
        1    0.000    0.000    0.187    0.187 type_check.py:3(<module>)
      144    0.003    0.000    0.100    0.001 <frozen importlib._bootstrap>:870(_find_spec)
      133    0.000    0.000    0.093    0.001 <frozen importlib._bootstrap_external>:1149(find_spec)
      133    0.002    0.000    0.093    0.001 <frozen importlib._bootstrap_external>:1117(_get_spec)
        1    0.000    0.000    0.092    0.092 __init__.py:7(<module>)
      259    0.007    0.000    0.081    0.000 <frozen importlib._bootstrap_external>:1233(find_spec)
      118    0.002    0.000    0.071    0.001 <frozen importlib._bootstrap_external>:743(get_code)
      550    0.001    0.000    0.070    0.000 <frozen importlib._bootstrap_external>:75(_path_stat)
      550    0.068    0.000    0.068    0.000 {built-in method nt.stat}
        2    0.000    0.000    0.060    0.030 __init__.py:45(<module>)
      100    0.049    0.000    0.049    0.000 {method 'randn' of 'mtrand.RandomState' objects}
        1    0.000    0.000    0.044    0.044 _internal.py:6(<module>)
  139/137    0.001    0.000    0.035    0.000 <frozen importlib._bootstrap>:564(module_from_spec)
        1    0.000    0.000    0.032    0.032 decorators.py:15(<module>)
        1    0.000    0.000    0.031    0.031 utils.py:4(<module>)
      121    0.000    0.000    0.025    0.000 re.py:286(_compile)
      118    0.016    0.000    0.025    0.000 <frozen importlib._bootstrap_external>:830(get_data)
       19    0.000    0.000    0.024    0.001 re.py:231(compile)
       16    0.000    0.000    0.024    0.002 sre_compile.py:557(compile)
      173    0.001    0.000    0.022    0.000 <frozen importlib._bootstrap_external>:85(_path_is_mode_type)
       10    0.000    0.000    0.022    0.002 <frozen importlib._bootstrap_external>:919(create_module)
       10    0.015    0.002    0.022    0.002 {built-in method _imp.create_dynamic}
        1    0.000    0.000    0.021    0.021 case.py:1(<module>)
        1    0.000    0.000    0.021    0.021 __init__.py:10(<module>)
      118    0.001    0.000    0.021    0.000 <frozen importlib._bootstrap_external>:485(_compile_bytecode)
  314/312    0.009    0.000    0.020    0.000 {built-in method builtins.__build_class__}
      118    0.019    0.000    0.019    0.000 {built-in method marshal.loads}
      158    0.000    0.000    0.019    0.000 <frozen importlib._bootstrap_external>:94(_path_isfile)
        1    0.000    0.000    0.017    0.017 py3k.py:4(<module>)
        1    0.000    0.000    0.016    0.016 result.py:1(<module>)
     1274    0.005    0.000    0.015    0.000 <frozen importlib._bootstrap_external>:57(_path_join)
        1    0.000    0.000    0.014    0.014 numeric.py:1(<module>)
        1    0.000    0.000    0.014    0.014 pathlib.py:1(<module>)
      118    0.000    0.000    0.014    0.000 <frozen importlib._bootstrap_external>:840(path_stats)
       16    0.000    0.000    0.013    0.001 sre_compile.py:542(_code)
        1    0.000    0.000    0.013    0.013 shutil.py:5(<module>)
        1    0.000    0.000    0.013    0.013 __init__.py:15(<module>)
        1    0.000    0.000    0.012    0.012 __init__.py:24(<module>)
        1    0.000    0.000    0.012    0.012 traceback.py:1(<module>)
    66/16    0.002    0.000    0.012    0.001 sre_compile.py:64(_compile)
        1    0.000    0.000    0.011    0.011 __init__.py:41(<module>)
        1    0.000    0.000    0.011    0.011 index_tricks.py:1(<module>)
      139    0.002    0.000    0.011    0.000 <frozen importlib._bootstrap>:504(_init_module_attrs)
        1    0.000    0.000    0.010    0.010 linecache.py:6(<module>)
       16    0.000    0.000    0.010    0.001 sre_parse.py:844(parse)
        1    0.000    0.000    0.009    0.009 tempfile.py:24(<module>)
      236    0.003    0.000    0.009    0.000 <frozen importlib._bootstrap_external>:263(cache_from_source)
      118    0.009    0.000    0.009    0.000 {method 'read' of '_io.FileIO' objects}
     1274    0.005    0.000    0.008    0.000 <frozen importlib._bootstrap_external>:59(<listcomp>)
        1    0.000    0.000    0.008    0.008 tokenize.py:21(<module>)
        1    0.000    0.000    0.008    0.008 main.py:1(<module>)
      303    0.001    0.000    0.008    0.000 <frozen importlib._bootstrap_external>:1080(_path_importer_cache)
    30/16    0.000    0.000    0.008    0.001 sre_parse.py:407(_parse_sub)
        1    0.000    0.000    0.008    0.008 polynomial.py:4(<module>)
      275    0.003    0.000    0.008    0.000 function_base.py:4519(add_newdoc)
    34/16    0.002    0.000    0.008    0.000 sre_parse.py:470(_parse)
        1    0.000    0.000    0.008    0.008 random.py:38(<module>)
       15    0.002    0.000    0.008    0.001 <frozen importlib._bootstrap_external>:1067(_path_hooks)
        1    0.000    0.000    0.007    0.007 string.py:15(<module>)
        1    0.000    0.000    0.007    0.007 numerictypes.py:82(<module>)
        1    0.000    0.000    0.007    0.007 __init__.py:88(<module>)
        1    0.000    0.000    0.007    0.007 string.py:65(__init__)
      246    0.001    0.000    0.006    0.000 <frozen importlib._bootstrap>:403(cached)
        1    0.000    0.000    0.006    0.006 pickle.py:24(<module>)
        8    0.000    0.000    0.006    0.001 __init__.py:357(namedtuple)
      128    0.001    0.000    0.006    0.000 <frozen importlib._bootstrap_external>:361(_get_cached)
      149    0.001    0.000    0.005    0.000 <frozen importlib._bootstrap>:147(__enter__)
      310    0.002    0.000    0.005    0.000 enum.py:801(__and__)
       15    0.000    0.000    0.005    0.000 <frozen importlib._bootstrap_external>:1322(path_hook_for_FileFinder)
        1    0.000    0.000    0.005    0.005 core.py:21(<module>)
      682    0.002    0.000    0.005    0.000 enum.py:265(__call__)
      325    0.002    0.000    0.005    0.000 <frozen importlib._bootstrap>:157(_get_module_lock)
       15    0.001    0.000    0.005    0.000 <frozen importlib._bootstrap_external>:1281(_fill_cache)
        1    0.000    0.000    0.004    0.004 runner.py:1(<module>)
       29    0.000    0.000    0.004    0.000 sre_compile.py:223(_compile_charset)
       15    0.000    0.000    0.004    0.000 <frozen importlib._bootstrap_external>:99(_path_isdir)
     2136    0.004    0.000    0.004    0.000 {built-in method builtins.getattr}
        4    0.000    0.000    0.004    0.001 warnings.py:119(filterwarnings)
      176    0.001    0.000    0.004    0.000 <frozen importlib._bootstrap>:194(_lock_unlock_module)
      118    0.003    0.000    0.004    0.000 <frozen importlib._bootstrap_external>:430(_validate_bytecode_header)
        1    0.000    0.000    0.004    0.004 npyio.py:1(<module>)
        1    0.000    0.000    0.004    0.004 __init__.py:3(<module>)
       29    0.002    0.000    0.004    0.000 sre_compile.py:250(_optimize_charset)
     2298    0.004    0.000    0.004    0.000 {built-in method builtins.hasattr}
        1    0.000    0.000    0.004    0.004 bz2.py:5(<module>)
        1    0.000    0.000    0.004    0.004 hashlib.py:54(<module>)
        1    0.000    0.000    0.004    0.004 arrayprint.py:5(<module>)
        1    0.000    0.000    0.003    0.003 signals.py:1(<module>)
     2804    0.003    0.000    0.003    0.000 {method 'rstrip' of 'str' objects}
      200    0.001    0.000    0.003    0.000 {method 'all' of 'numpy.ndarray' objects}
        1    0.000    0.000    0.003    0.003 linalg.py:10(<module>)
        1    0.000    0.000    0.003    0.003 parse.py:28(<module>)
        1    0.000    0.000    0.003    0.003 polynomial.py:56(<module>)
      100    0.001    0.000    0.003    0.000 fromnumeric.py:1973(all)
     1699    0.002    0.000    0.003    0.000 {method 'join' of 'str' objects}
      301    0.003    0.000    0.003    0.000 {method 'reduce' of 'numpy.ufunc' objects}
      100    0.001    0.000    0.003    0.000 linalg.py:214(_assertFinite)
        1    0.000    0.000    0.003    0.003 fftpack.py:32(<module>)
      200    0.001    0.000    0.003    0.000 _methods.py:40(_all)
      139    0.001    0.000    0.003    0.000 <frozen importlib._bootstrap>:318(__exit__)
     2181    0.003    0.000    0.003    0.000 {built-in method builtins.isinstance}
       15    0.002    0.000    0.002    0.000 {built-in method nt.listdir}
      236    0.002    0.000    0.002    0.000 <frozen importlib._bootstrap_external>:63(_path_split)
      128    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap_external>:1228(_get_spec)
       43    0.000    0.000    0.002    0.000 core.py:143(get_object_signature)
        1    0.000    0.000    0.002    0.002 fnmatch.py:11(<module>)
        1    0.000    0.000    0.002    0.002 utils.py:1(<module>)
        1    0.000    0.000    0.002    0.002 defmatrix.py:1(<module>)
     1373    0.002    0.000    0.002    0.000 <frozen importlib._bootstrap>:222(_verbose_message)
      520    0.001    0.000    0.002    0.000 sre_parse.py:253(get)
       26    0.000    0.000    0.002    0.000 core.py:6493(__init__)
      325    0.002    0.000    0.002    0.000 <frozen importlib._bootstrap>:78(acquire)
      680    0.001    0.000    0.002    0.000 enum.py:515(__new__)
        1    0.000    0.000    0.002    0.002 lzma.py:9(<module>)
       26    0.000    0.000    0.002    0.000 core.py:6498(getdoc)
        1    0.000    0.000    0.002    0.002 loader.py:1(<module>)
        1    0.000    0.000    0.002    0.002 getlimits.py:3(<module>)
     1632    0.002    0.000    0.002    0.000 {method 'append' of 'list' objects}
        1    0.000    0.000    0.002    0.002 difflib.py:27(<module>)
      325    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap>:103(release)
        1    0.000    0.000    0.002    0.002 datetime.py:5(<module>)
        1    0.000    0.000    0.002    0.002 signal.py:1(<module>)
      147    0.001    0.000    0.002    0.000 <frozen importlib._bootstrap>:58(__init__)
        1    0.000    0.000    0.002    0.002 extras.py:10(<module>)
1333/1301    0.002    0.000    0.002    0.000 {built-in method builtins.len}
      100    0.001    0.000    0.002    0.000 linalg.py:139(_commonType)
        2    0.000    0.000    0.002    0.001 enum.py:602(_convert)
        2    0.000    0.000    0.002    0.001 function_base.py:1(<module>)
        1    0.000    0.000    0.002    0.002 pickle.py:181(<listcomp>)
      141    0.001    0.000    0.002    0.000 {built-in method builtins.any}
       10    0.000    0.000    0.002    0.000 abc.py:132(__new__)
        1    0.000    0.000    0.001    0.001 fromnumeric.py:3(<module>)
      410    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:847(__exit__)
      149    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:151(__exit__)
      100    0.000    0.000    0.001    0.000 {method 'max' of 'numpy.ndarray' objects}
      410    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:843(__enter__)
      102    0.000    0.000    0.001    0.000 re.py:169(match)
      128    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap_external>:524(spec_from_file_location)
       16    0.000    0.000    0.001    0.000 sre_compile.py:482(_compile_info)
  498/485    0.001    0.000    0.001    0.000 {built-in method builtins.issubclass}
      147    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:176(cb)
        1    0.000    0.000    0.001    0.001 numbers.py:6(<module>)
       38    0.001    0.000    0.001    0.000 _inspect.py:142(formatargspec)
       30    0.000    0.000    0.001    0.000 enum.py:795(__or__)
      300    0.001    0.000    0.001    0.000 linalg.py:111(isComplexType)
        2    0.000    0.000    0.001    0.001 enum.py:364(_create_)
      938    0.001    0.000    0.001    0.000 {method 'rpartition' of 'str' objects}
      101    0.000    0.000    0.001    0.000 _methods.py:25(_amax)
      882    0.001    0.000    0.001    0.000 {built-in method _imp.acquire_lock}
       19    0.000    0.000    0.001    0.000 nosetester.py:518(_numpy_tester)
       16    0.000    0.000    0.001    0.000 sre_parse.py:828(fix_flags)
      100    0.000    0.000    0.001    0.000 linalg.py:106(_makearray)
       30    0.001    0.000    0.001    0.000 functools.py:44(update_wrapper)
        6    0.000    0.000    0.001    0.000 getlimits.py:65(__init__)
      882    0.001    0.000    0.001    0.000 {built-in method _imp.release_lock}
      653    0.001    0.000    0.001    0.000 sre_parse.py:232(__next)
      236    0.001    0.000    0.001    0.000 sre_parse.py:163(__getitem__)
      236    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap_external>:52(_r_long)
      317    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:416(parent)
      299    0.001    0.000    0.001    0.000 {built-in method _thread.allocate_lock}
      100    0.001    0.000    0.001    0.000 linalg.py:209(_assertNdSquareness)
       19    0.000    0.000    0.001    0.000 nosetester.py:152(__init__)
      405    0.001    0.000    0.001    0.000 {method 'format' of 'str' objects}
        3    0.000    0.000    0.001    0.000 numeric.py:367(extend_all)
        1    0.000    0.000    0.001    0.001 numerictypes.py:301(_add_aliases)
   107/57    0.001    0.000    0.001    0.000 sre_parse.py:173(getwidth)
       43    0.000    0.000    0.001    0.000 _inspect.py:98(getargspec)
      248    0.001    0.000    0.001    0.000 sre_compile.py:102(fixup)
      274    0.001    0.000    0.001    0.000 {built-in method numpy.core.multiarray.array}
        7    0.000    0.000    0.001    0.000 abc.py:151(register)
      597    0.001    0.000    0.001    0.000 {method 'get' of 'dict' objects}
      651    0.001    0.000    0.001    0.000 {built-in method _thread.get_ident}
       51    0.000    0.000    0.001    0.000 _internal.py:703(_ufunc_doc_signature_formatter)
       11    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:728(create_module)
        2    0.000    0.000    0.001    0.000 enum.py:124(__new__)
        3    0.000    0.000    0.001    0.000 enum.py:758(_missing_)
        1    0.000    0.000    0.001    0.001 util.py:1(<module>)
       19    0.000    0.000    0.001    0.000 ntpath.py:240(dirname)
        3    0.000    0.000    0.001    0.000 enum.py:765(_create_pseudo_member_)
        9    0.000    0.000    0.001    0.000 datetime.py:355(__new__)
      144    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:707(find_spec)
     12/7    0.000    0.000    0.001    0.000 abc.py:194(__subclasscheck__)
      556    0.001    0.000    0.001    0.000 <frozen importlib._bootstrap>:321(<genexpr>)
       15    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap_external>:1196(__init__)
       11    0.001    0.000    0.001    0.000 {built-in method _imp.create_builtin}
       18    0.000    0.000    0.001    0.000 core.py:1021(__init__)
        1    0.000    0.000    0.001    0.001 argparse.py:62(<module>)
        3    0.000    0.000    0.001    0.000 enum.py:837(_decompose)
      236    0.001    0.000    0.001    0.000 {method 'rsplit' of 'str' objects}
       30    0.000    0.000    0.001    0.000 getlimits.py:70(<lambda>)
       19    0.000    0.000    0.001    0.000 ntpath.py:199(split)
       14    0.000    0.000    0.001    0.000 hashlib.py:116(__get_openssl_constructor)
      133    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap>:780(find_spec)
      268    0.001    0.000    0.001    0.000 {built-in method numpy.core.multiarray.add_docstring}
        1    0.000    0.000    0.001    0.001 numerictypes.py:120(<listcomp>)
       27    0.000    0.000    0.001    0.000 core.py:940(__init__)
        3    0.000    0.000    0.001    0.000 tokenize.py:137(_all_string_prefixes)
        1    0.000    0.000    0.001    0.001 pathlib.py:382(_NormalAccessor)
        1    0.000    0.000    0.001    0.001 numerictypes.py:957(_register_types)
      468    0.001    0.000    0.001    0.000 {method 'add' of 'set' objects}
      118    0.000    0.000    0.001    0.000 <frozen importlib._bootstrap_external>:393(_check_name_wrapper)
      154    0.000    0.000    0.001    0.000 sre_parse.py:171(append)
        1    0.001    0.001    0.001    0.001 {built-in method sys.getwindowsversion}
      100    0.000    0.000    0.001    0.000 numeric.py:534(asanyarray)
        9    0.000    0.000    0.001    0.000 extras.py:238(__init__)
      268    0.001    0.000    0.001    0.000 {method 'strip' of 'str' objects}
        8    0.000    0.000    0.001    0.000 hashlib.py:73(__get_builtin_constructor)
      403    0.000    0.000    0.000    0.000 {built-in method nt.fspath}
        9    0.000    0.000    0.000    0.000 extras.py:242(getdoc)
       87    0.000    0.000    0.000    0.000 {method 'extend' of 'list' objects}
        1    0.000    0.000    0.000    0.000 threading.py:1(<module>)
      259    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:37(_relax_case)
       45    0.000    0.000    0.000    0.000 {built-in method __new__ of type object at 0x0000000064C7B3F0}
      100    0.000    0.000    0.000    0.000 linalg.py:127(_complexType)
       15    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:1310(<setcomp>)
      242    0.000    0.000    0.000    0.000 {built-in method builtins.setattr}
      100    0.000    0.000    0.000    0.000 numeric.py:463(asarray)
      100    0.000    0.000    0.000    0.000 {method 'astype' of 'numpy.ndarray' objects}
        3    0.000    0.000    0.000    0.000 enum.py:855(<listcomp>)
      193    0.000    0.000    0.000    0.000 sre_parse.py:248(match)
       10    0.000    0.000    0.000    0.000 pathlib.py:384(_wrap_strfunc)
        1    0.000    0.000    0.000    0.000 _compat_pickle.py:9(<module>)
      328    0.000    0.000    0.000    0.000 {built-in method _sre.getlower}
       10    0.000    0.000    0.000    0.000 abc.py:135(<setcomp>)
      250    0.000    0.000    0.000    0.000 {built-in method builtins.min}
      359    0.000    0.000    0.000    0.000 {built-in method builtins.globals}
      100    0.000    0.000    0.000    0.000 linalg.py:124(_realType)
       26    0.000    0.000    0.000    0.000 numerictypes.py:229(bitname)
      236    0.000    0.000    0.000    0.000 {built-in method from_bytes}
      118    0.000    0.000    0.000    0.000 {built-in method _imp._fix_co_filename}
      321    0.000    0.000    0.000    0.000 {method 'lower' of 'str' objects}
      101    0.000    0.000    0.000    0.000 sre_parse.py:285(tell)
        1    0.000    0.000    0.000    0.000 ctypeslib.py:51(<module>)
        1    0.000    0.000    0.000    0.000 mixins.py:1(<module>)
      308    0.000    0.000    0.000    0.000 {built-in method builtins.chr}
        1    0.000    0.000    0.000    0.000 numerictypes.py:285(_add_types)
        1    0.000    0.000    0.000    0.000 ast.py:26(<module>)
      287    0.000    0.000    0.000    0.000 {method 'startswith' of 'str' objects}
      148    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:369(__init__)
        8    0.000    0.000    0.000    0.000 core.py:7973(__init__)
      118    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:35(_new_module)
        1    0.000    0.000    0.000    0.000 token.py:1(<module>)
       38    0.000    0.000    0.000    0.000 _inspect.py:67(getargs)
       97    0.000    0.000    0.000    0.000 sre_parse.py:159(__len__)
       15    0.000    0.000    0.000    0.000 enum.py:70(__setitem__)
        1    0.000    0.000    0.000    0.000 _iotools.py:3(<module>)
        1    0.000    0.000    0.000    0.000 mixins.py:63(NDArrayOperatorsMixin)
       11    0.000    0.000    0.000    0.000 sre_parse.py:96(closegroup)
       30    0.000    0.000    0.000    0.000 sre_compile.py:388(_simple)
        1    0.000    0.000    0.000    0.000 pathlib.py:107(_WindowsFlavour)
        1    0.000    0.000    0.000    0.000 bisect.py:1(<module>)
       36    0.000    0.000    0.000    0.000 getlimits.py:69(<lambda>)
       72    0.000    0.000    0.000    0.000 numerictypes.py:127(english_lower)
        1    0.000    0.000    0.000    0.000 token.py:74(<dictcomp>)
        1    0.000    0.000    0.000    0.000 numeric.py:374(<listcomp>)
        2    0.000    0.000    0.000    0.000 enum.py:623(<listcomp>)
      100    0.000    0.000    0.000    0.000 linalg.py:101(get_linalg_error_extobj)
       13    0.000    0.000    0.000    0.000 sre_compile.py:376(_mk_bitmap)
        8    0.000    0.000    0.000    0.000 core.py:7978(getdoc)
      139    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:311(__enter__)
       19    0.000    0.000    0.000    0.000 ntpath.py:121(splitdrive)
       19    0.000    0.000    0.000    0.000 _weakrefset.py:58(__iter__)
      138    0.000    0.000    0.000    0.000 {method 'endswith' of 'str' objects}
      149    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:143(__init__)
        6    0.000    0.000    0.000    0.000 contextlib.py:129(contextmanager)
      100    0.000    0.000    0.000    0.000 linalg.py:198(_assertRankAtLeast2)
       30    0.000    0.000    0.000    0.000 getlimits.py:26(_fr1)
      102    0.000    0.000    0.000    0.000 {method 'match' of '_sre.SRE_Pattern' objects}
      139    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:307(__init__)
        1    0.000    0.000    0.000    0.000 chebyshev.py:87(<module>)
      133    0.000    0.000    0.000    0.000 {built-in method _imp.is_frozen}
       11    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:433(spec_from_loader)
      181    0.000    0.000    0.000    0.000 {method 'partition' of 'str' objects}
       60    0.000    0.000    0.000    0.000 _inspect.py:146(<lambda>)
       78    0.000    0.000    0.000    0.000 _internal.py:714(<genexpr>)
      106    0.000    0.000    0.000    0.000 {built-in method builtins.max}
        1    0.000    0.000    0.000    0.000 _polybase.py:8(<module>)
        6    0.000    0.000    0.000    0.000 core.py:1174(__init__)
      118    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:800(__init__)
        2    0.000    0.000    0.000    0.000 os.py:672(__setitem__)
       14    0.000    0.000    0.000    0.000 __init__.py:139(_check_size)
        4    0.000    0.000    0.000    0.000 {built-in method nt.putenv}
        1    0.000    0.000    0.000    0.000 suite.py:1(<module>)
        1    0.000    0.000    0.000    0.000 _compression.py:1(<module>)
        2    0.000    0.000    0.000    0.000 shape_base.py:1(<module>)
        1    0.000    0.000    0.000    0.000 records.py:36(<module>)
        1    0.000    0.000    0.000    0.000 hermite.py:59(<module>)
       12    0.000    0.000    0.000    0.000 mixins.py:48(_numeric_methods)
       54    0.000    0.000    0.000    0.000 types.py:135(__get__)
        1    0.000    0.000    0.000    0.000 laguerre.py:59(<module>)
        1    0.000    0.000    0.000    0.000 legendre.py:83(<module>)
      175    0.000    0.000    0.000    0.000 {built-in method builtins.ord}
        1    0.000    0.000    0.000    0.000 hermite_e.py:59(<module>)
       28    0.000    0.000    0.000    0.000 signal.py:10(<lambda>)
        1    0.000    0.000    0.000    0.000 numerictypes.py:781(_construct_lookups)
        1    0.000    0.000    0.000    0.000 __init__.py:259(_reset_cache)
      110    0.000    0.000    0.000    0.000 {method 'translate' of 'str' objects}
       54    0.000    0.000    0.000    0.000 sre_parse.py:81(groups)
        8    0.000    0.000    0.000    0.000 sre_parse.py:266(getuntil)
       51    0.000    0.000    0.000    0.000 {built-in method _imp.is_builtin}
        1    0.000    0.000    0.000    0.000 defchararray.py:17(<module>)
        1    0.000    0.000    0.000    0.000 result.py:24(TestResult)
        1    0.000    0.000    0.000    0.000 _endian.py:1(<module>)
      139    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:424(has_location)
        1    0.000    0.000    0.000    0.000 datetime.py:1949(timezone)
       37    0.000    0.000    0.000    0.000 __init__.py:422(<genexpr>)
       11    0.000    0.000    0.000    0.000 sre_parse.py:84(opengroup)
        1    0.000    0.000    0.000    0.000 ufunclike.py:5(<module>)
        1    0.000    0.000    0.000    0.000 numerictypes.py:451(_set_array_types)
      111    0.000    0.000    0.000    0.000 {method 'find' of 'bytearray' objects}
       37    0.000    0.000    0.000    0.000 __init__.py:420(<genexpr>)
        3    0.000    0.000    0.000    0.000 result.py:12(failfast)
       98    0.000    0.000    0.000    0.000 _inspect.py:133(strseq)
        1    0.000    0.000    0.000    0.000 polyutils.py:45(<module>)
       43    0.000    0.000    0.000    0.000 _inspect.py:15(ismethod)
       16    0.000    0.000    0.000    0.000 sre_parse.py:223(__init__)
        1    0.000    0.000    0.000    0.000 core.py:2731(MaskedArray)
        1    0.000    0.000    0.000    0.000 _globals.py:17(<module>)
      120    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:1202(<genexpr>)
        3    0.000    0.000    0.000    0.000 datetime.py:1368(__new__)
       38    0.000    0.000    0.000    0.000 numerictypes.py:154(english_upper)
      118    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:825(get_filename)
      118    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:669(create_module)
       13    0.000    0.000    0.000    0.000 sre_compile.py:378(<listcomp>)
        1    0.000    0.000    0.000    0.000 _import_tools.py:1(<module>)
       43    0.000    0.000    0.000    0.000 _inspect.py:28(isfunction)
       25    0.000    0.000    0.000    0.000 enum.py:351(__setattr__)
        1    0.000    0.000    0.000    0.000 nosetester.py:6(<module>)
        1    0.000    0.000    0.000    0.000 _methods.py:5(<module>)
       47    0.000    0.000    0.000    0.000 {method 'update' of 'dict' objects}
       24    0.000    0.000    0.000    0.000 tokenize.py:148(<listcomp>)
        3    0.000    0.000    0.000    0.000 __init__.py:73(CFUNCTYPE)
        3    0.000    0.000    0.000    0.000 ufunclike.py:14(_deprecate_out_named_y)
       24    0.000    0.000    0.000    0.000 enum.py:872(_power_of_two)
       38    0.000    0.000    0.000    0.000 _inspect.py:43(iscode)
       32    0.000    0.000    0.000    0.000 sre_compile.py:539(isstring)
        6    0.000    0.000    0.000    0.000 enum.py:417(_get_mixins_)
       40    0.000    0.000    0.000    0.000 _weakrefset.py:36(__init__)
       13    0.000    0.000    0.000    0.000 sre_parse.py:342(_escape)
        6    0.000    0.000    0.000    0.000 numeric.py:2667(seterr)
        3    0.000    0.000    0.000    0.000 pathlib.py:390(_wrap_binary_strfunc)
       40    0.000    0.000    0.000    0.000 {built-in method nt.getcwd}
       68    0.000    0.000    0.000    0.000 {built-in method builtins.repr}
       66    0.000    0.000    0.000    0.000 sre_parse.py:111(__init__)
        1    0.000    0.000    0.000    0.000 memmap.py:1(<module>)
       35    0.000    0.000    0.000    0.000 datetime.py:261(_check_int_field)
       10    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:927(exec_module)
        1    0.000    0.000    0.000    0.000 _datasource.py:35(<module>)
       30    0.000    0.000    0.000    0.000 {method 'copy' of 'numpy.ndarray' objects}
        1    0.000    0.000    0.000    0.000 numerictypes.py:428(_construct_char_code_lookup)
        1    0.000    0.000    0.000    0.000 threading.py:1190(__init__)
        1    0.000    0.000    0.000    0.000 case.py:341(TestCase)
       30    0.000    0.000    0.000    0.000 numerictypes.py:443(_add_array_type)
        2    0.000    0.000    0.000    0.000 functools.py:479(decorating_function)
       27    0.000    0.000    0.000    0.000 pathlib.py:119(<genexpr>)
        1    0.000    0.000    0.000    0.000 pprint.py:35(<module>)
       11    0.000    0.000    0.000    0.000 enum.py:20(_is_descriptor)
        6    0.000    0.000    0.000    0.000 sre_compile.py:381(_bytes_to_codes)
        5    0.000    0.000    0.000    0.000 datetime.py:291(_check_time_fields)
        2    0.000    0.000    0.000    0.000 enum.py:114(__prepare__)
        1    0.000    0.000    0.000    0.000 scimath.py:17(<module>)
       11    0.000    0.000    0.000    0.000 _weakrefset.py:26(__exit__)
       86    0.000    0.000    0.000    0.000 _compat_pickle.py:167(<genexpr>)
       23    0.000    0.000    0.000    0.000 numerictypes.py:216(_evalname)
        5    0.000    0.000    0.000    0.000 datetime.py:278(_check_date_fields)
        1    0.000    0.000    0.000    0.000 stride_tricks.py:7(<module>)
       72    0.000    0.000    0.000    0.000 {built-in method builtins.abs}
        3    0.000    0.000    0.000    0.000 __init__.py:476(PYFUNCTYPE)
       27    0.000    0.000    0.000    0.000 pathlib.py:120(<genexpr>)
       20    0.000    0.000    0.000    0.000 tokenize.py:112(group)
        3    0.000    0.000    0.000    0.000 numeric.py:3064(__enter__)
        2    0.000    0.000    0.000    0.000 {built-in method _ctypes.POINTER}
        2    0.000    0.000    0.000    0.000 os.py:678(__delitem__)
        1    0.000    0.000    0.000    0.000 __future__.py:48(<module>)
       12    0.000    0.000    0.000    0.000 numerictypes.py:181(english_capitalize)
       19    0.000    0.000    0.000    0.000 ntpath.py:33(_get_bothseps)
       21    0.000    0.000    0.000    0.000 {built-in method numpy.core.multiarray.empty}
       19    0.000    0.000    0.000    0.000 _weakrefset.py:81(add)
        1    0.000    0.000    0.000    0.000 helper.py:4(<module>)
       11    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:736(exec_module)
        1    0.000    0.000    0.000    0.000 datetime.py:530(__neg__)
        2    0.000    0.000    0.000    0.000 __init__.py:332(__init__)
       19    0.000    0.000    0.000    0.000 mixins.py:20(_binary_method)
        1    0.000    0.000    0.000    0.000 linalg.py:76(_determine_error_states)
       54    0.000    0.000    0.000    0.000 abc.py:9(abstractmethod)
        1    0.000    0.000    0.000    0.000 format.py:149(<module>)
        1    0.000    0.000    0.000    0.000 machar.py:7(<module>)
        4    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:1102(_legacy_get_spec)
        7    0.000    0.000    0.000    0.000 os.py:734(encodekey)
       18    0.000    0.000    0.000    0.000 enum.py:820(_high_bit)
       11    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:232(_requires_builtin_wrapper)
        1    0.000    0.000    0.000    0.000 twodim_base.py:3(<module>)
        2    0.000    0.000    0.000    0.000 core.py:6370(__init__)
        3    0.000    0.000    0.000    0.000 numeric.py:3069(__exit__)
        1    0.000    0.000    0.000    0.000 arrayterator.py:9(<module>)
       41    0.000    0.000    0.000    0.000 {method 'pop' of 'dict' objects}
       12    0.000    0.000    0.000    0.000 ctypeslib.py:330(prep_simple)
       43    0.000    0.000    0.000    0.000 {method 'upper' of 'str' objects}
        5    0.000    0.000    0.000    0.000 {method 'sort' of 'list' objects}
        1    0.000    0.000    0.000    0.000 <string>:1(<module>)
        5    0.000    0.000    0.000    0.000 warnings.py:159(_add_filter)
        2    0.000    0.000    0.000    0.000 datetime.py:1048(__new__)
       28    0.000    0.000    0.000    0.000 functools.py:74(wraps)
        3    0.000    0.000    0.000    0.000 utils.py:118(deprecate)
        1    0.000    0.000    0.000    0.000 arraysetops.py:27(<module>)
       50    0.000    0.000    0.000    0.000 {built-in method _ctypes.sizeof}
       51    0.000    0.000    0.000    0.000 enum.py:592(name)
       35    0.000    0.000    0.000    0.000 {method 'replace' of 'str' objects}
        1    0.000    0.000    0.000    0.000 _polybase.py:19(ABCPolyBase)
       45    0.000    0.000    0.000    0.000 {built-in method builtins.divmod}
        1    0.000    0.000    0.000    0.000 _version.py:7(<module>)
       45    0.000    0.000    0.000    0.000 {method 'isidentifier' of 'str' objects}
        2    0.000    0.000    0.000    0.000 enum.py:462(_find_new_)
       16    0.000    0.000    0.000    0.000 {built-in method _sre.compile}
        3    0.000    0.000    0.000    0.000 os.py:664(__getitem__)
        1    0.000    0.000    0.000    0.000 arrayprint.py:378(decorating_function)
        1    0.000    0.000    0.000    0.000 case.py:44(_Outcome)
        2    0.000    0.000    0.000    0.000 os.py:720(<lambda>)
       13    0.000    0.000    0.000    0.000 mixins.py:30(_reflected_binary_method)
        1    0.000    0.000    0.000    0.000 nanfunctions.py:21(<module>)
        2    0.000    0.000    0.000    0.000 datetime.py:688(__new__)
        1    0.000    0.000    0.000    0.000 numbers.py:32(Complex)
        3    0.000    0.000    0.000    0.000 utils.py:74(__call__)
       43    0.000    0.000    0.000    0.000 _compat_pickle.py:165(<genexpr>)
       12    0.000    0.000    0.000    0.000 mixins.py:40(_inplace_binary_method)
        9    0.000    0.000    0.000    0.000 core.py:2569(_arraymethod)
       11    0.000    0.000    0.000    0.000 _weakrefset.py:20(__enter__)
        1    0.000    0.000    0.000    0.000 __init__.py:415(__getattr__)
        1    0.000    0.000    0.000    0.000 __init__.py:1083(__init__)
       30    0.000    0.000    0.000    0.000 sre_parse.py:167(__setitem__)
        1    0.000    0.000    0.000    0.000 numerictypes.py:338(_add_integer_aliases)
        1    0.000    0.000    0.000    0.000 numbers.py:294(Integral)
       37    0.000    0.000    0.000    0.000 {method '__contains__' of 'frozenset' objects}
        1    0.000    0.000    0.000    0.000 pathlib.py:602(PurePath)
        6    0.000    0.000    0.000    0.000 numeric.py:2767(geterr)
        5    0.000    0.000    0.000    0.000 sre_compile.py:441(_get_charset_prefix)
       27    0.000    0.000    0.000    0.000 {built-in method sys._getframe}
        1    0.000    0.000    0.000    0.000 threading.py:757(__init__)
        2    0.000    0.000    0.000    0.000 _collections_abc.py:664(__contains__)
       34    0.000    0.000    0.000    0.000 {method 'items' of 'dict' objects}
       16    0.000    0.000    0.000    0.000 sre_parse.py:76(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:769(__init__)
        1    0.000    0.000    0.000    0.000 arraypad.py:5(<module>)
      8/6    0.000    0.000    0.000    0.000 sre_compile.py:414(_get_literal_prefix)
        1    0.000    0.000    0.000    0.000 _iotools.py:251(NameValidator)
        1    0.000    0.000    0.000    0.000 financial.py:10(<module>)
        1    0.000    0.000    0.000    0.000 fromnumeric.py:2174(amax)
        1    0.000    0.000    0.000    0.000 numerictypes.py:379(_set_up_aliases)
        8    0.000    0.000    0.000    0.000 sre_parse.py:294(_class_escape)
        1    0.000    0.000    0.000    0.000 threading.py:512(set)
        5    0.000    0.000    0.000    0.000 getlimits.py:507(__init__)
        9    0.000    0.000    0.000    0.000 {built-in method builtins.round}
        9    0.000    0.000    0.000    0.000 os.py:728(check_str)
        1    0.000    0.000    0.000    0.000 numbers.py:147(Real)
       25    0.000    0.000    0.000    0.000 {method 'get' of 'mappingproxy' objects}
       18    0.000    0.000    0.000    0.000 {built-in method _struct.calcsize}
       15    0.000    0.000    0.000    0.000 enum.py:28(_is_dunder)
        1    0.000    0.000    0.000    0.000 einsumfunc.py:4(<module>)
        1    0.000    0.000    0.000    0.000 _iotools.py:474(StringConverter)
        1    0.000    0.000    0.000    0.000 posixpath.py:11(<module>)
       28    0.000    0.000    0.000    0.000 {method 'isupper' of 'str' objects}
       29    0.000    0.000    0.000    0.000 signal.py:17(<lambda>)
        1    0.000    0.000    0.000    0.000 pickle.py:986(_Unpickler)
       15    0.000    0.000    0.000    0.000 _weakrefset.py:70(__contains__)
       13    0.000    0.000    0.000    0.000 {method 'translate' of 'bytearray' objects}
       15    0.000    0.000    0.000    0.000 enum.py:36(_is_sunder)
        1    0.000    0.000    0.000    0.000 polynomial.py:1601(Polynomial)
        1    0.000    0.000    0.000    0.000 _collections_abc.py:657(get)
        4    0.000    0.000    0.000    0.000 {method 'find_loader' of 'zipimport.zipimporter' objects}
        1    0.000    0.000    0.000    0.000 threading.py:498(__init__)
        1    0.000    0.000    0.000    0.000 random.py:87(__init__)
        1    0.000    0.000    0.000    0.000 argparse.py:150(HelpFormatter)
        7    0.000    0.000    0.000    0.000 {built-in method numpy.core.umath.seterrobj}
        1    0.000    0.000    0.000    0.000 {built-in method builtins.dir}
        1    0.000    0.000    0.000    0.000 warnings.py:143(simplefilter)
        1    0.000    0.000    0.000    0.000 weakref.py:102(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:358(__getattr__)
        1    0.000    0.000    0.000    0.000 defmatrix.py:174(matrix)
        1    0.000    0.000    0.000    0.000 _inspect.py:7(<module>)
        1    0.000    0.000    0.000    0.000 pprint.py:98(PrettyPrinter)
        1    0.000    0.000    0.000    0.000 argparse.py:1050(_SubParsersAction)
        1    0.000    0.000    0.000    0.000 random.py:96(seed)
        1    0.000    0.000    0.000    0.000 pathlib.py:970(Path)
        4    0.000    0.000    0.000    0.000 core.py:124(doc_note)
       14    0.000    0.000    0.000    0.000 {built-in method numpy.core.umath.geterrobj}
       19    0.000    0.000    0.000    0.000 {method 'keys' of 'dict' objects}
       11    0.000    0.000    0.000    0.000 {method 'remove' of 'list' objects}
        1    0.000    0.000    0.000    0.000 {built-in method builtins.print}
       10    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap_external>:908(__init__)
        2    0.000    0.000    0.000    0.000 enum.py:160(<setcomp>)
        3    0.000    0.000    0.000    0.000 numeric.py:3060(__init__)
       11    0.000    0.000    0.000    0.000 _weakrefset.py:16(__init__)
        1    0.000    0.000    0.000    0.000 polynomial.py:939(poly1d)
       18    0.000    0.000    0.000    0.000 {method 'bit_length' of 'int' objects}
        1    0.000    0.000    0.000    0.000 threading.py:215(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:357(notify_all)
        1    0.000    0.000    0.000    0.000 datetime.py:1360(datetime)
        1    0.000    0.000    0.000    0.000 __init__.py:750(_addHandlerRef)
        1    0.000    0.000    0.000    0.000 threading.py:738(Thread)
        6    0.000    0.000    0.000    0.000 {method 'tolist' of 'memoryview' objects}
        1    0.000    0.000    0.000    0.000 chebyshev.py:2036(Chebyshev)
        1    0.000    0.000    0.000    0.000 __config__.py:3(<module>)
        1    0.000    0.000    0.000    0.000 __init__.py:1580(__init__)
       11    0.000    0.000    0.000    0.000 {built-in method _imp.exec_builtin}
       11    0.000    0.000    0.000    0.000 _weakrefset.py:52(_commit_removals)
        2    0.000    0.000    0.000    0.000 numeric.py:1942(set_string_function)
        1    0.000    0.000    0.000    0.000 numeric.py:3075(_setdef)
        9    0.000    0.000    0.000    0.000 __future__.py:79(__init__)
        1    0.000    0.000    0.000    0.000 datetime.py:336(timedelta)
        1    0.000    0.000    0.000    0.000 __init__.py:365(__getitem__)
        4    0.000    0.000    0.000    0.000 mixins.py:55(_unary_method)
       10    0.000    0.000    0.000    0.000 {built-in method _imp.exec_dynamic}
        2    0.000    0.000    0.000    0.000 enum.py:310(__getattr__)
        2    0.000    0.000    0.000    0.000 helper.py:251(__init__)
        1    0.000    0.000    0.000    0.000 info.py:156(<module>)
        1    0.000    0.000    0.000    0.000 info.py:83(<module>)
       10    0.000    0.000    0.000    0.000 case.py:1315(_deprecate)
        1    0.000    0.000    0.000    0.000 legendre.py:1790(Legendre)
        1    0.000    0.000    0.000    0.000 info.py:86(<module>)
       11    0.000    0.000    0.000    0.000 {method 'remove' of 'set' objects}
       11    0.000    0.000    0.000    0.000 enum.py:628(<lambda>)
        1    0.000    0.000    0.000    0.000 _import_tools.py:9(PackageLoader)
        1    0.000    0.000    0.000    0.000 <string>:5(TokenInfo)
        1    0.000    0.000    0.000    0.000 hermite.py:1810(Hermite)
        1    0.000    0.000    0.000    0.000 hermite_e.py:1807(HermiteE)
        1    0.000    0.000    0.000    0.000 laguerre.py:1760(Laguerre)
        6    0.000    0.000    0.000    0.000 {method 'cast' of 'memoryview' objects}
       11    0.000    0.000    0.000    0.000 {method '__subclasses__' of 'type' objects}
        7    0.000    0.000    0.000    0.000 {method 'split' of 'str' objects}
        1    0.000    0.000    0.000    0.000 defchararray.py:1669(chararray)
        1    0.000    0.000    0.000    0.000 core.py:6255(__new__)
        1    0.000    0.000    0.000    0.000 ntpath.py:43(normcase)
        1    0.000    0.000    0.000    0.000 copyreg.py:12(pickle)
        1    0.000    0.000    0.000    0.000 pickle.py:345(_Pickler)
        2    0.000    0.000    0.000    0.000 tokenize.py:114(maybe)
       11    0.000    0.000    0.000    0.000 <frozen importlib._bootstrap>:753(is_package)
       11    0.000    0.000    0.000    0.000 {method 'items' of 'collections.OrderedDict' objects}
        1    0.000    0.000    0.000    0.000 {built-in method math.exp}
        3    0.000    0.000    0.000    0.000 datetime.py:1972(_create)
        1    0.000    0.000    0.000    0.000 pickle.py:184(_Framer)
        1    0.000    0.000    0.000    0.000 threading.py:334(notify)
        1    0.000    0.000    0.000    0.000 core.py:6248(MaskedConstant)
       11    0.000    0.000    0.000    0.000 {method '__subclasshook__' of 'object' objects}
        1    0.000    0.000    0.000    0.000 {function Random.seed at 0x000001D8AA6F9950}
        1    0.000    0.000    0.000    0.000 __init__.py:1266(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:893(_set_tstate_lock)
        1    0.000    0.000    0.000    0.000 datetime.py:658(date)
        1    0.000    0.000    0.000    0.000 warnings.py:449(__enter__)
        1    0.000    0.000    0.000    0.000 <string>:5(ParseResult)
        1    0.000    0.000    0.000    0.000 difflib.py:1703(HtmlDiff)
        1    0.000    0.000    0.000    0.000 __init__.py:1251(Logger)
        1    0.000    0.000    0.000    0.000 info.py:184(<module>)
        2    0.000    0.000    0.000    0.000 functools.py:448(lru_cache)
        1    0.000    0.000    0.000    0.000 re.py:249(escape)
        1    0.000    0.000    0.000    0.000 _internal.py:240(_ctypes)
        1    0.000    0.000    0.000    0.000 <string>:5(SplitResult)
        1    0.000    0.000    0.000    0.000 __init__.py:1588(LoggerAdapter)
        5    0.000    0.000    0.000    0.000 {method 'setter' of 'property' objects}
        1    0.000    0.000    0.000    0.000 sre_compile.py:393(_generate_overlap_table)
        1    0.000    0.000    0.000    0.000 <string>:5(Match)
        1    0.000    0.000    0.000    0.000 random.py:71(Random)
        1    0.000    0.000    0.000    0.000 info.py:34(<module>)
        1    0.000    0.000    0.000    0.000 datetime.py:1023(time)
        7    0.000    0.000    0.000    0.000 _inspect.py:144(<lambda>)
        2    0.000    0.000    0.000    0.000 getlimits.py:532(max)
        1    0.000    0.000    0.000    0.000 <string>:5(Mismatch)
        1    0.000    0.000    0.000    0.000 bz2.py:32(BZ2File)
        3    0.000    0.000    0.000    0.000 index_tricks.py:241(__init__)
        5    0.000    0.000    0.000    0.000 datetime.py:308(_check_tzinfo_arg)
        1    0.000    0.000    0.000    0.000 <string>:5(DefragResult)
        1    0.000    0.000    0.000    0.000 numbers.py:267(Rational)
        2    0.000    0.000    0.000    0.000 threading.py:74(RLock)
        1    0.000    0.000    0.000    0.000 <string>:5(usage)
        1    0.000    0.000    0.000    0.000 tempfile.py:629(SpooledTemporaryFile)
        1    0.000    0.000    0.000    0.000 {built-in method _ctypes.LoadLibrary}
        7    0.000    0.000    0.000    0.000 {built-in method _warnings._filters_mutated}
        6    0.000    0.000    0.000    0.000 enum.py:179(<genexpr>)
        7    0.000    0.000    0.000    0.000 enum.py:866(<lambda>)
        1    0.000    0.000    0.000    0.000 _internal.py:210(_getintp_ctype)
        1    0.000    0.000    0.000    0.000 tokenize.py:113(any)
        1    0.000    0.000    0.000    0.000 lzma.py:38(LZMAFile)
        1    0.000    0.000    0.000    0.000 index_tricks.py:451(__init__)
        1    0.000    0.000    0.000    0.000 {method 'view' of 'numpy.ndarray' objects}
        2    0.000    0.000    0.000    0.000 {built-in method numpy.core.multiarray.set_string_function}
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_md5}
        5    0.000    0.000    0.000    0.000 {method 'insert' of 'list' objects}
        1    0.000    0.000    0.000    0.000 warnings.py:468(__exit__)
        2    0.000    0.000    0.000    0.000 __init__.py:342(_FuncPtr)
        2    0.000    0.000    0.000    0.000 __init__.py:190(_checkLevel)
        1    0.000    0.000    0.000    0.000 <string>:5(_LoggingWatcher)
        1    0.000    0.000    0.000    0.000 weakref.py:288(update)
        3    0.000    0.000    0.000    0.000 datetime.py:40(_days_before_year)
        1    0.000    0.000    0.000    0.000 datetime.py:953(tzinfo)
        5    0.000    0.000    0.000    0.000 _inspect.py:145(<lambda>)
        1    0.000    0.000    0.000    0.000 __init__.py:798(createLock)
        1    0.000    0.000    0.000    0.000 __init__.py:760(Handler)
        6    0.000    0.000    0.000    0.000 core.py:875(__init__)
        1    0.000    0.000    0.000    0.000 extras.py:1494(__init__)
        1    0.000    0.000    0.000    0.000 weakref.py:354(__init__)
        2    0.000    0.000    0.000    0.000 enum.py:135(<dictcomp>)
        4    0.000    0.000    0.000    0.000 __init__.py:412(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:470(__init__)
        1    0.000    0.000    0.000    0.000 main.py:49(TestProgram)
        1    0.000    0.000    0.000    0.000 argparse.py:1581(ArgumentParser)
        3    0.000    0.000    0.000    0.000 utils.py:69(__init__)
        5    0.000    0.000    0.000    0.000 datetime.py:45(_days_in_month)
        1    0.000    0.000    0.000    0.000 pathlib.py:126(<setcomp>)
        3    0.000    0.000    0.000    0.000 __init__.py:99(CFunctionType)
        1    0.000    0.000    0.000    0.000 loader.py:66(TestLoader)
        1    0.000    0.000    0.000    0.000 index_tricks.py:481(__init__)
        1    0.000    0.000    0.000    0.000 os.py:1067(__subclasshook__)
        2    0.000    0.000    0.000    0.000 enum.py:65(__init__)
        1    0.000    0.000    0.000    0.000 pathlib.py:574(_PathParents)
        1    0.000    0.000    0.000    0.000 traceback.py:223(FrameSummary)
        1    0.000    0.000    0.000    0.000 traceback.py:426(TracebackException)
        1    0.000    0.000    0.000    0.000 __init__.py:219(_acquireLock)
        1    0.000    0.000    0.000    0.000 threading.py:566(Barrier)
        1    0.000    0.000    0.000    0.000 utils.py:1955(suppress_warnings)
        1    0.000    0.000    0.000    0.000 {method 'union' of 'set' objects}
        1    0.000    0.000    0.000    0.000 parse.py:142(_NetlocResultMixinBase)
        3    0.000    0.000    0.000    0.000 __init__.py:477(CFunctionType)
        1    0.000    0.000    0.000    0.000 _endian.py:23(_swapped_meta)
        1    0.000    0.000    0.000    0.000 getlimits.py:62(MachArLike)
        1    0.000    0.000    0.000    0.000 getlimits.py:455(iinfo)
        1    0.000    0.000    0.000    0.000 case.py:1337(FunctionTestCase)
        1    0.000    0.000    0.000    0.000 __init__.py:228(_releaseLock)
        1    0.000    0.000    0.000    0.000 __init__.py:1960(NullHandler)
        1    0.000    0.000    0.000    0.000 threading.py:239(__enter__)
        1    0.000    0.000    0.000    0.000 threading.py:242(__exit__)
        1    0.000    0.000    0.000    0.000 runner.py:29(TextTestResult)
        1    0.000    0.000    0.000    0.000 index_tricks.py:231(AxisConcatenator)
        1    0.000    0.000    0.000    0.000 arrayterator.py:20(Arrayterator)
        1    0.000    0.000    0.000    0.000 _version.py:18(NumpyVersion)
        3    0.000    0.000    0.000    0.000 {method 'setdefault' of 'dict' objects}
        3    0.000    0.000    0.000    0.000 {method 'clear' of 'dict' objects}
        1    0.000    0.000    0.000    0.000 {method 'find' of 'str' objects}
        1    0.000    0.000    0.000    0.000 {built-in method math.sqrt}
        3    0.000    0.000    0.000    0.000 enum.py:597(value)
        1    0.000    0.000    0.000    0.000 pathlib.py:274(_PosixFlavour)
        1    0.000    0.000    0.000    0.000 __init__.py:426(Formatter)
        1    0.000    0.000    0.000    0.000 __init__.py:678(Filterer)
        1    0.000    0.000    0.000    0.000 __init__.py:1008(FileHandler)
        1    0.000    0.000    0.000    0.000 threading.py:254(_is_owned)
        1    0.000    0.000    0.000    0.000 _compression.py:33(DecompressReader)
        3    0.000    0.000    0.000    0.000 utils.py:52(_set_function_name)
        1    0.000    0.000    0.000    0.000 index_tricks.py:356(RClass)
        2    0.000    0.000    0.000    0.000 index_tricks.py:658(__init__)
        3    0.000    0.000    0.000    0.000 core.py:835(__init__)
        1    0.000    0.000    0.000    0.000 core.py:6046(mvoid)
        2    0.000    0.000    0.000    0.000 {method 'mro' of 'type' objects}
        1    0.000    0.000    0.000    0.000 {built-in method time.time}
        2    0.000    0.000    0.000    0.000 enum.py:335(__members__)
        1    0.000    0.000    0.000    0.000 copyreg.py:22(constructor)
        1    0.000    0.000    0.000    0.000 sre_parse.py:287(seek)
        2    0.000    0.000    0.000    0.000 pathlib.py:48(__init__)
        1    0.000    0.000    0.000    0.000 pathlib.py:127(<setcomp>)
        1    0.000    0.000    0.000    0.000 parse.py:346(_fix_result_transcoding)
        1    0.000    0.000    0.000    0.000 getlimits.py:305(finfo)
        1    0.000    0.000    0.000    0.000 traceback.py:310(StackSummary)
        2    0.000    0.000    0.000    0.000 __init__.py:683(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:87(_RLock)
        1    0.000    0.000    0.000    0.000 threading.py:203(Condition)
        1    0.000    0.000    0.000    0.000 threading.py:890(_set_ident)
        1    0.000    0.000    0.000    0.000 suite.py:16(BaseTestSuite)
        1    0.000    0.000    0.000    0.000 loader.py:76(__init__)
        1    0.000    0.000    0.000    0.000 argparse.py:1220(_ActionsContainer)
        1    0.000    0.000    0.000    0.000 index_tricks.py:486(ndenumerate)
        1    0.000    0.000    0.000    0.000 npyio.py:104(NpzFile)
        1    0.000    0.000    0.000    0.000 _datasource.py:154(DataSource)
        3    0.000    0.000    0.000    0.000 core.py:896(__init__)
        1    0.000    0.000    0.000    0.000 {built-in method _thread._set_sentinel}
        2    0.000    0.000    0.000    0.000 {built-in method math.log}
        1    0.000    0.000    0.000    0.000 warnings.py:428(__init__)
        1    0.000    0.000    0.000    0.000 version.py:5(<module>)
        1    0.000    0.000    0.000    0.000 pathlib.py:537(_RecursiveWildcardSelector)
        1    0.000    0.000    0.000    0.000 __init__.py:311(CDLL)
        1    0.000    0.000    0.000    0.000 tokenize.py:99(TokenInfo)
        1    0.000    0.000    0.000    0.000 case.py:1395(_SubTest)
        1    0.000    0.000    0.000    0.000 difflib.py:43(SequenceMatcher)
        1    0.000    0.000    0.000    0.000 __init__.py:1143(Manager)
        1    0.000    0.000    0.000    0.000 string.py:169(Formatter)
        1    0.000    0.000    0.000    0.000 tempfile.py:136(_RandomNameSequence)
        1    0.000    0.000    0.000    0.000 utils.py:997(SafeEval)
        1    0.000    0.000    0.000    0.000 nosetester.py:110(NoseTester)
        2    0.000    0.000    0.000    0.000 index_tricks.py:159(__init__)
        1    0.000    0.000    0.000    0.000 index_tricks.py:536(ndindex)
        1    0.000    0.000    0.000    0.000 _datasource.py:504(Repository)
        1    0.000    0.000    0.000    0.000 extras.py:1453(MAxisConcatenator)
        2    0.000    0.000    0.000    0.000 {built-in method builtins.vars}
        1    0.000    0.000    0.000    0.000 _internal.py:200(dummy_ctype)
        1    0.000    0.000    0.000    0.000 pathlib.py:44(_Flavour)
        1    0.000    0.000    0.000    0.000 pathlib.py:498(_PreciseSelector)
        1    0.000    0.000    0.000    0.000 pathlib.py:1424(PosixPath)
        1    0.000    0.000    0.000    0.000 pickle.py:220(_Unframer)
        1    0.000    0.000    0.000    0.000 records.py:298(recarray)
        1    0.000    0.000    0.000    0.000 memmap.py:20(memmap)
        1    0.000    0.000    0.000    0.000 machar.py:17(MachAr)
        1    0.000    0.000    0.000    0.000 tokenize.py:222(Untokenizer)
        1    0.000    0.000    0.000    0.000 __init__.py:239(LogRecord)
        1    0.000    0.000    0.000    0.000 __init__.py:599(BufferingFormatter)
        1    0.000    0.000    0.000    0.000 __init__.py:949(StreamHandler)
        1    0.000    0.000    0.000    0.000 __init__.py:1077(_StderrHandler)
        1    0.000    0.000    0.000    0.000 string.py:77(Template)
        1    0.000    0.000    0.000    0.000 threading.py:487(Event)
        1    0.000    0.000    0.000    0.000 suite.py:92(TestSuite)
        1    0.000    0.000    0.000    0.000 suite.py:270(_ErrorHolder)
        1    0.000    0.000    0.000    0.000 utils.py:1890(clear_and_catch_warnings)
        1    0.000    0.000    0.000    0.000 tempfile.py:777(TemporaryDirectory)
        1    0.000    0.000    0.000    0.000 index_tricks.py:98(nd_grid)
        1    0.000    0.000    0.000    0.000 index_tricks.py:456(CClass)
        1    0.000    0.000    0.000    0.000 function_base.py:2527(vectorize)
        1    0.000    0.000    0.000    0.000 ctypeslib.py:177(_ndptr)
        1    0.000    0.000    0.000    0.000 core.py:200(<listcomp>)
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha224}
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha256}
        2    0.000    0.000    0.000    0.000 {method 'acquire' of '_thread.lock' objects}
        1    0.000    0.000    0.000    0.000 __future__.py:78(_Feature)
        1    0.000    0.000    0.000    0.000 pathlib.py:467(_Selector)
        1    0.000    0.000    0.000    0.000 pathlib.py:957(PurePosixPath)
        1    0.000    0.000    0.000    0.000 pathlib.py:1427(WindowsPath)
        1    0.000    0.000    0.000    0.000 parse.py:203(_NetlocResultMixinBytes)
        1    0.000    0.000    0.000    0.000 __init__.py:411(LibraryLoader)
        1    0.000    0.000    0.000    0.000 numerictypes.py:765(_typedict)
        1    0.000    0.000    0.000    0.000 numeric.py:2997(errstate)
        1    0.000    0.000    0.000    0.000 arrayprint.py:602(FloatFormat)
        1    0.000    0.000    0.000    0.000 records.py:83(format_parser)
        1    0.000    0.000    0.000    0.000 records.py:215(record)
        1    0.000    0.000    0.000    0.000 shape_base.py:364(_Recurser)
        1    0.000    0.000    0.000    0.000 case.py:128(_BaseTestCaseContext)
        1    0.000    0.000    0.000    0.000 case.py:137(_AssertRaisesBaseContext)
        1    0.000    0.000    0.000    0.000 case.py:184(_AssertRaisesContext)
        1    0.000    0.000    0.000    0.000 case.py:221(_AssertWarnsContext)
        1    0.000    0.000    0.000    0.000 case.py:278(_CapturingHandler)
        1    0.000    0.000    0.000    0.000 case.py:297(_AssertLogsContext)
        1    0.000    0.000    0.000    0.000 difflib.py:751(Differ)
        1    0.000    0.000    0.000    0.000 __init__.py:378(PercentStyle)
        1    0.000    0.000    0.000    0.000 __init__.py:1148(__init__)
        1    0.000    0.000    0.000    0.000 threading.py:369(Semaphore)
        1    0.000    0.000    0.000    0.000 loader.py:23(_FailedTest)
        1    0.000    0.000    0.000    0.000 argparse.py:109(_AttributeHolder)
        1    0.000    0.000    0.000    0.000 argparse.py:1146(FileType)
        1    0.000    0.000    0.000    0.000 argparse.py:1527(_ArgumentGroup)
        1    0.000    0.000    0.000    0.000 runner.py:13(_WritelnDecorator)
        1    0.000    0.000    0.000    0.000 runner.py:120(TextTestRunner)
        1    0.000    0.000    0.000    0.000 utils.py:1589(WarningMessage)
        1    0.000    0.000    0.000    0.000 utils.py:1622(WarningManager)
        1    0.000    0.000    0.000    0.000 _compression.py:9(BaseStream)
        1    0.000    0.000    0.000    0.000 tempfile.py:416(_TemporaryFileCloser)
        1    0.000    0.000    0.000    0.000 tempfile.py:459(_TemporaryFileWrapper)
        1    0.000    0.000    0.000    0.000 random.py:663(SystemRandom)
        1    0.000    0.000    0.000    0.000 index_tricks.py:614(IndexExpression)
        1    0.000    0.000    0.000    0.000 ast.py:229(NodeVisitor)
        1    0.000    0.000    0.000    0.000 _datasource.py:74(__init__)
        1    0.000    0.000    0.000    0.000 _datasource.py:50(_FileOpeners)
        1    0.000    0.000    0.000    0.000 helper.py:230(_FFTCache)
        2    0.000    0.000    0.000    0.000 core.py:912(__init__)
        1    0.000    0.000    0.000    0.000 core.py:1001(_MaskedBinaryOperation)
        1    0.000    0.000    0.000    0.000 core.py:2400(_MaskedPrintOption)
        1    0.000    0.000    0.000    0.000 core.py:6361(_extrema_operation)
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha384}
        2    0.000    0.000    0.000    0.000 {built-in method builtins.callable}
        1    0.000    0.000    0.000    0.000 _internal.py:674(AxisError)
        1    0.000    0.000    0.000    0.000 pathlib.py:492(_TerminatingSelector)
        1    0.000    0.000    0.000    0.000 pathlib.py:514(_WildcardSelector)
        1    0.000    0.000    0.000    0.000 pathlib.py:962(PureWindowsPath)
        1    0.000    0.000    0.000    0.000 parse.py:126(_ResultMixinStr)
        1    0.000    0.000    0.000    0.000 parse.py:173(_NetlocResultMixinStr)
        1    0.000    0.000    0.000    0.000 parse.py:308(DefragResult)
        1    0.000    0.000    0.000    0.000 parse.py:316(SplitResult)
        1    0.000    0.000    0.000    0.000 parse.py:723(Quoter)
        1    0.000    0.000    0.000    0.000 __init__.py:151(py_object)
        1    0.000    0.000    0.000    0.000 __init__.py:168(c_long)
        1    0.000    0.000    0.000    0.000 __init__.py:235(c_char_p)
        1    0.000    0.000    0.000    0.000 __init__.py:371(PyDLL)
        1    0.000    0.000    0.000    0.000 arrayprint.py:711(IntegerFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:731(LongFloatFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:761(LongComplexFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:772(ComplexFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:789(DatetimeFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:810(TimedeltaFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:837(SubArrayFormat)
        1    0.000    0.000    0.000    0.000 arrayprint.py:847(StructureFormat)
        1    0.000    0.000    0.000    0.000 __init__.py:393(StrFormatStyle)
        1    0.000    0.000    0.000    0.000 __init__.py:402(StringTemplateStyle)
        1    0.000    0.000    0.000    0.000 __init__.py:641(Filter)
        1    0.000    0.000    0.000    0.000 __init__.py:1101(PlaceHolder)
        1    0.000    0.000    0.000    0.000 string.py:55(_TemplateMetaclass)
        1    0.000    0.000    0.000    0.000 threading.py:1158(Timer)
        1    0.000    0.000    0.000    0.000 threading.py:1207(_DummyThread)
        1    0.000    0.000    0.000    0.000 pprint.py:72(_safe_key)
        1    0.000    0.000    0.000    0.000 argparse.py:637(RawDescriptionHelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:648(RawTextHelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:738(Action)
        1    0.000    0.000    0.000    0.000 argparse.py:829(_StoreAction)
        1    0.000    0.000    0.000    0.000 argparse.py:864(_StoreConstAction)
        1    0.000    0.000    0.000    0.000 argparse.py:958(_AppendConstAction)
        1    0.000    0.000    0.000    0.000 argparse.py:1005(_HelpAction)
        1    0.000    0.000    0.000    0.000 argparse.py:1024(_VersionAction)
        1    0.000    0.000    0.000    0.000 argparse.py:1200(Namespace)
        1    0.000    0.000    0.000    0.000 argparse.py:1561(_MutuallyExclusiveGroup)
        1    0.000    0.000    0.000    0.000 utils.py:57(_Deprecate)
        1    0.000    0.000    0.000    0.000 stride_tricks.py:15(DummyArray)
        1    0.000    0.000    0.000    0.000 npyio.py:40(BagObj)
        1    0.000    0.000    0.000    0.000 _iotools.py:155(LineSplitter)
        1    0.000    0.000    0.000    0.000 core.py:202(<listcomp>)
        1    0.000    0.000    0.000    0.000 core.py:869(_DomainSafeDivide)
        1    0.000    0.000    0.000    0.000 core.py:922(_MaskedUnaryOperation)
        1    0.000    0.000    0.000    0.000 core.py:1153(_DomainedBinaryOperation)
        1    0.000    0.000    0.000    0.000 core.py:2617(MaskedIterator)
        1    0.000    0.000    0.000    0.000 core.py:6482(_frommethod)
        1    0.000    0.000    0.000    0.000 core.py:7960(_convert2ma)
        1    0.000    0.000    0.000    0.000 extras.py:218(_fromnxfunction)
        1    0.000    0.000    0.000    0.000 extras.py:273(_fromnxfunction_single)
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha1}
        1    0.000    0.000    0.000    0.000 {built-in method _hashlib.openssl_sha512}
        1    0.000    0.000    0.000    0.000 {method 'acquire' of '_thread.RLock' objects}
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
        1    0.000    0.000    0.000    0.000 {built-in method atexit.register}
        1    0.000    0.000    0.000    0.000 _globals.py:33(ModuleDeprecationWarning)
        1    0.000    0.000    0.000    0.000 _globals.py:45(VisibleDeprecationWarning)
        1    0.000    0.000    0.000    0.000 _globals.py:56(_NoValue)
        1    0.000    0.000    0.000    0.000 _import_tools.py:340(PackageLoaderDebug)
        1    0.000    0.000    0.000    0.000 _internal.py:233(_missing_ctypes)
        1    0.000    0.000    0.000    0.000 _internal.py:671(TooHardError)
        1    0.000    0.000    0.000    0.000 pathlib.py:377(_Accessor)
        1    0.000    0.000    0.000    0.000 parse.py:134(_ResultMixinBytes)
        1    0.000    0.000    0.000    0.000 parse.py:321(ParseResult)
        1    0.000    0.000    0.000    0.000 parse.py:327(DefragResultBytes)
        1    0.000    0.000    0.000    0.000 parse.py:335(SplitResultBytes)
        1    0.000    0.000    0.000    0.000 parse.py:340(ParseResultBytes)
        1    0.000    0.000    0.000    0.000 __init__.py:160(c_short)
        1    0.000    0.000    0.000    0.000 __init__.py:164(c_ushort)
        1    0.000    0.000    0.000    0.000 __init__.py:172(c_ulong)
        1    0.000    0.000    0.000    0.000 __init__.py:197(c_longdouble)
        1    0.000    0.000    0.000    0.000 __init__.py:207(c_longlong)
        1    0.000    0.000    0.000    0.000 __init__.py:211(c_ulonglong)
        1    0.000    0.000    0.000    0.000 __init__.py:218(c_ubyte)
        1    0.000    0.000    0.000    0.000 __init__.py:225(c_byte)
        1    0.000    0.000    0.000    0.000 __init__.py:241(c_void_p)
        1    0.000    0.000    0.000    0.000 __init__.py:246(c_bool)
        1    0.000    0.000    0.000    0.000 __init__.py:251(c_wchar_p)
        1    0.000    0.000    0.000    0.000 __init__.py:380(WinDLL)
        1    0.000    0.000    0.000    0.000 __init__.py:389(HRESULT)
        1    0.000    0.000    0.000    0.000 __init__.py:402(OleDLL)
        1    0.000    0.000    0.000    0.000 _endian.py:46(BigEndianStructure)
        1    0.000    0.000    0.000    0.000 numbers.py:12(Number)
        1    0.000    0.000    0.000    0.000 numeric.py:76(ComplexWarning)
        1    0.000    0.000    0.000    0.000 numeric.py:2992(_unspecified)
        1    0.000    0.000    0.000    0.000 pickle.py:64(PickleError)
        1    0.000    0.000    0.000    0.000 pickle.py:75(UnpicklingError)
        1    0.000    0.000    0.000    0.000 pickle.py:88(_Stop)
        1    0.000    0.000    0.000    0.000 arrayprint.py:368(_recursive_guard)
        1    0.000    0.000    0.000    0.000 tokenize.py:217(TokenError)
        1    0.000    0.000    0.000    0.000 case.py:25(SkipTest)
        1    0.000    0.000    0.000    0.000 case.py:33(_ShouldStop)
        1    0.000    0.000    0.000    0.000 case.py:38(_UnexpectedSuccess)
        1    0.000    0.000    0.000    0.000 __init__.py:384(__init__)
        1    0.000    0.000    0.000    0.000 __init__.py:1574(RootLogger)
        1    0.000    0.000    0.000    0.000 threading.py:449(BoundedSemaphore)
        1    0.000    0.000    0.000    0.000 threading.py:1188(_MainThread)
        1    0.000    0.000    0.000    0.000 suite.py:317(_DebugResult)
        1    0.000    0.000    0.000    0.000 argparse.py:200(_Section)
        1    0.000    0.000    0.000    0.000 argparse.py:659(ArgumentDefaultsHelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:676(MetavarTypeHelpFormatter)
        1    0.000    0.000    0.000    0.000 argparse.py:709(ArgumentError)
        1    0.000    0.000    0.000    0.000 argparse.py:887(_StoreTrueAction)
        1    0.000    0.000    0.000    0.000 argparse.py:904(_StoreFalseAction)
        1    0.000    0.000    0.000    0.000 argparse.py:921(_AppendAction)
        1    0.000    0.000    0.000    0.000 argparse.py:984(_CountAction)
        1    0.000    0.000    0.000    0.000 argparse.py:1052(_ChoicesPseudoAction)
        1    0.000    0.000    0.000    0.000 signals.py:9(_InterruptHandler)
        1    0.000    0.000    0.000    0.000 utils.py:41(KnownFailureException)
        1    0.000    0.000    0.000    0.000 utils.py:1849(IgnoreException)
        1    0.000    0.000    0.000    0.000 shutil.py:55(Error)
        1    0.000    0.000    0.000    0.000 shutil.py:58(SameFileError)
        1    0.000    0.000    0.000    0.000 shutil.py:61(SpecialFileError)
        1    0.000    0.000    0.000    0.000 shutil.py:65(ExecError)
        1    0.000    0.000    0.000    0.000 shutil.py:68(ReadError)
        1    0.000    0.000    0.000    0.000 ast.py:266(NodeTransformer)
        1    0.000    0.000    0.000    0.000 polynomial.py:22(RankWarning)
        1    0.000    0.000    0.000    0.000 linalg.py:43(LinAlgError)
        1    0.000    0.000    0.000    0.000 _iotools.py:461(ConversionWarning)
        1    0.000    0.000    0.000    0.000 polyutils.py:58(RankWarning)
        1    0.000    0.000    0.000    0.000 polyutils.py:66(PolyDomainError)
        1    0.000    0.000    0.000    0.000 polyutils.py:79(PolyBase)
        1    0.000    0.000    0.000    0.000 core.py:93(MaskedArrayFutureWarning)
        1    0.000    0.000    0.000    0.000 core.py:160(MAError)
        1    0.000    0.000    0.000    0.000 core.py:168(MaskError)
        1    0.000    0.000    0.000    0.000 core.py:826(_DomainCheckInterval)
        1    0.000    0.000    0.000    0.000 core.py:859(__init__)
        1    0.000    0.000    0.000    0.000 core.py:851(_DomainTan)
        1    0.000    0.000    0.000    0.000 core.py:890(_DomainGreater)
        1    0.000    0.000    0.000    0.000 core.py:906(_DomainGreaterEqual)
        1    0.000    0.000    0.000    0.000 core.py:2406(__init__)
        1    0.000    0.000    0.000    0.000 extras.py:291(_fromnxfunction_seq)
        1    0.000    0.000    0.000    0.000 extras.py:304(_fromnxfunction_args)
        1    0.000    0.000    0.000    0.000 extras.py:329(_fromnxfunction_allargs)
        1    0.000    0.000    0.000    0.000 extras.py:1478(mr_class)
        1    0.000    0.000    0.000    0.000 {built-in method numpy.core.multiarray.set_typeDict}
        1    0.000    0.000    0.000    0.000 {method '__enter__' of '_thread.lock' objects}
        1    0.000    0.000    0.000    0.000 {method '__exit__' of '_thread.lock' objects}
        1    0.000    0.000    0.000    0.000 {method 'release' of '_thread.RLock' objects}
        1    0.000    0.000    0.000    0.000 {method 'values' of 'dict' objects}
        1    0.000    0.000    0.000    0.000 __init__.py:189(c_float)
        1    0.000    0.000    0.000    0.000 __init__.py:193(c_double)
        1    0.000    0.000    0.000    0.000 __init__.py:230(c_char)
        1    0.000    0.000    0.000    0.000 __init__.py:256(c_wchar)
        1    0.000    0.000    0.000    0.000 pickle.py:68(PicklingError)
        1    0.000    0.000    0.000    0.000 tokenize.py:219(StopTokenizing)
        1    0.000    0.000    0.000    0.000 threading.py:720(BrokenBarrierError)
        1    0.000    0.000    0.000    0.000 argparse.py:729(ArgumentTypeError)
        1    0.000    0.000    0.000    0.000 shutil.py:71(RegistryError)
        1    0.000    0.000    0.000    0.000 _iotools.py:445(ConverterError)
        1    0.000    0.000    0.000    0.000 _iotools.py:453(ConverterLockError)
        1    0.000    0.000    0.000    0.000 _distributor_init.py:10(<module>)
        1    0.000    0.000    0.000    0.000 polyutils.py:62(PolyError)
        1    0.000    0.000    0.000    0.000 core.py:6258(__array_finalize__)


我们看到此时的排序规则为 Ordered by: cumulative time,这样我们只需要看 cumtime 列即可发现各函数所耗费的总计时间。 注意如果一个函数A调用了函数B,计时器并不会停止而重新计时。cProfile记录的是各函数调用的起始和结束时间,并依次计算总时间。

除了命令行用法外,cProfile 还可以通过编程的方式分析任意代码块的性能。IPython为此提供了一个方便的借口,即 %prun 命令和带 -p 选项的 %run。 %prun的格式跟 cProfile 的差不多,但它分析的是 Python 语句 而不是整个 .py 文件:


In [6]:
%prun -l 7 -s cumulative run_experiment()


 
执行结果为: 3804 function calls in 0.752 seconds Ordered by: cumulative time List reduced from 31 to 7 due to restriction <7> ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.752 0.752 {built-in method builtins.exec} 1 0.000 0.000 0.752 0.752 :1() 1 0.002 0.002 0.752 0.752 :4(run_experiment) 100 0.686 0.007 0.699 0.007 linalg.py:819(eigvals) 100 0.050 0.000 0.050 0.000 {method 'randn' of 'mtrand.RandomState' objects} 100 0.001 0.000 0.004 0.000 fromnumeric.py:1973(all) 200 0.001 0.000 0.003 0.000 {method 'all' of 'numpy.ndarray' objects}

在ipython terminal中,执行 %run -p -s cumulative chapter03/simple03.py也能达到上述效果,但是却无法退出IPython。

逐行分析函数性能

有时候,%prun (或者其他基于cProfile的性能分析手段)所得到的信息要么不足以说明函数的执行时间,要么难以理解(按函数名聚合?)。对于这种情形,我们可以使用一个叫做line_profiler的小型库。气质有一个心的魔术函数 %lprun, 它可以对一个或者多个函数进行逐行性能分析。我们有修改 IPython 配置 以启用这个扩展.

For IPython 0.11+, you can install it by editing the IPython configuration file ~/.ipython/profile_default/ipython_config.py to add the 'line_profiler' item to the extensions list:


In [ ]:
# A list of dotted module names of IPython extensions to load.

c.TerminalIPythonApp.extensions = [
    'line_profiler',
]

In [7]:
#这个代码可以确认 line_profiler 是否被正常的安装和load
import line_profiler
line_profiler


Out[7]:
<module 'line_profiler' from 'D:\\ProgramData\\Miniconda3\\envs\\ywfang-python36\\lib\\site-packages\\line_profiler.py'>

line_profiler 可以通过编程方式使用,但是其更强大的一面在于与 Ipython 的交互使用。

假设我们有一个名为 prof_mod 的模块,其代码内容为(我们把prof_mode.py 保存在 chapter03目录下)


In [8]:
from numpy.random import randn

def add_and_sum(x,y):
    added = x + y
    summed = added.sum(axis=1)
    return summed

def call_function():
    x = randn(1000,1000)
    y = randn(1000,1000)
    return add_and_sum(x,y)

如果我们想了解 add_and_sum 函数的性能,%prun 会给出如下所示的结果


In [1]:
%run chapter03/prof_mode.py

In [3]:
x = randn(3000, 3000) 
y = randn(3000,3000)

In [4]:
%prun add_and_sum(x,y) #因为我们这里只是测试 add_and_sum 这个函数,所以必须给它实参,所以上面我们给出了 x和y


 

执行的结果为:

7 function calls in 0.100 seconds Ordered by: internal time ncalls tottime percall cumtime percall filename:lineno(function) 1 0.073 0.073 0.091 0.091 prof_mode.py:3(add_and_sum) 1 0.018 0.018 0.018 0.018 {method 'reduce' of 'numpy.ufunc' objects} 1 0.009 0.009 0.100 0.100 :1() 1 0.000 0.000 0.100 0.100 {built-in method builtins.exec} 1 0.000 0.000 0.018 0.018 {method 'sum' of 'numpy.ndarray' objects} 1 0.000 0.000 0.018 0.018 _methods.py:31(_sum) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}

当我们启用 line_profiler 这个扩展后,就会出现新的魔术命令 %lprun。 用法上唯一的区别就是: 必须为 %lprun 指明想要测试哪个或哪些函数。%lprun 的通用语法为:


In [ ]:
%lprun -f func1 -f func2 statement_to_profile

在本例子中,我们想要测试 add_and_sum,于是执行


In [12]:
%lprun -f add_and_sum add_and_sum(x,y)


ERROR:root:Line magic function `%lprun` not found.

网上找了下别人也遇到了和我一样的错误,stackoverflow上面有解决方案


In [6]:
%load_ext line_profiler

然后我们再执行一次


In [7]:
%lprun -f add_and_sum add_and_sum(x,y)
# 结果显示为 Timer unit: 6.98413e-08 s Total time: 0.0875449 s File: E:\PhD-ECNU\github\readingnotes\machine-learning\McKinney-pythonbook2013\chapter03\prof_mode.py Function: add_and_sum at line 3 Line # Hits Time Per Hit % Time Line Contents ============================================================== 3 def add_and_sum(x,y): 4 1 998739 998739.0 79.7 added = x + y 5 1 254695 254695.0 20.3 summed = added.sum(axis=1) 6 1 49 49.0 0.0 return summed

这个结果就容易理解了许多。这里我们测试的只是 add_and_sum 这个函数。上面那个模块中还有一个call_function 函数,我们可以结合 add_and_sum 一起测试,于是最终我们的命令成为了这个样子:


In [8]:
%lprun -f add_and_sum -f call_function call_function()
#结果为 Timer unit: 6.98413e-08 s Total time: 0.00845827 s File: E:\PhD-ECNU\github\readingnotes\machine-learning\McKinney-pythonbook2013\chapter03\prof_mode.py Function: add_and_sum at line 3 Line # Hits Time Per Hit % Time Line Contents ============================================================== 3 def add_and_sum(x,y): 4 1 95977 95977.0 79.2 added = x + y 5 1 25074 25074.0 20.7 summed = added.sum(axis=1) 6 1 56 56.0 0.0 return summed Total time: 0.115998 s File: E:\PhD-ECNU\github\readingnotes\machine-learning\McKinney-pythonbook2013\chapter03\prof_mode.py Function: call_function at line 8 Line # Hits Time Per Hit % Time Line Contents ============================================================== 8 def call_function(): 9 1 743764 743764.0 44.8 x = randn(1000,1000) 10 1 783307 783307.0 47.2 y = randn(1000,1000) 11 1 133812 133812.0 8.1 return add_and_sum(x,y)

In [ ]:
综上当我们需要测试一个程序中的某些函数时我们需要使用这两行代码

%load_ext line_profiler
%lprun -f func1 -f func2 statement_to_profile

通常我们会用 %prun (cProfile) 做宏观性能分析,而用 %lprun 来做 微观的性能分析。

注意,在使用 %lprun 时,之所以必须显示指明待测试函数的函数名,是因为“跟踪”每一行代码的时间代价是巨大的。对不感兴趣的函数进行跟踪会对分析结果产生很显著的影响。

IPython HTML Notebook

IPthon HTML Notebook,即现在的 jupyter notebook。这个其实在我整个笔记中都已经在使用了。notebook项目最初由 Brian Graner 领导的 Ipython 团队从 2011 年开始开发。目前已被广泛使用于开发和数据分析。

首先来看个导入图标的例子,其实这个笔记的开头,我也已经展示过部分这样的功能


In [9]:
import numpy as np
import pandas as pd

print('hello world!')


hello world!

此处补充一个书上 导入图片的一个例子:


In [2]:
import numpy as np
import pandas as pd

tips = pd.read_csv('./pydata-book/ch08/tips.csv')
tips.head()


Out[2]:
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4

In [11]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

img = plt.imread('pydata-book/ch03/stinkbug.png')
img(figsize = (4,4))
plt.imshow(img)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-07b9734f6b5b> in <module>()
      5 
      6 img = plt.imread('pydata-book/ch03/stinkbug.png')
----> 7 img(figsize = (4,4))
      8 plt.imshow(img)

TypeError: 'numpy.ndarray' object is not callable

jupyter notebook是一种基于 JSON 的文档格式 .ipynb, 这种格式是的我们可以轻松分享代码,分析结果,特别是展示图标。目前在各种 Python 研讨会上,一种流行的演示手段就是使用 IPython Notebook,然后再讲 .ipynb 文件发布到网上供所有人参考。

Jupyter Notebook 是一个运行于命令行上的轻量级服务器进程。执行下面代码即可启动


In [ ]:
jupyter notebook

如果想要图标以inline方式展示,可以在打开notebook后加入 %matplotlib --inline 或者 %pylab --inline

利用IPython 提高代码开发效率的几点提示

使用 IPython,可以让代码的结果更容易交互和亦欲查看。特别是当执行出现错误的时候,IPython 的交互性可以带来极大的便利

重新加载模块依赖项

在 Python 中,当我们输入 import some_lib 时候,some_lib 中的代码就会被执行,且其中所有的变量、函数和引入项都会保存在一个新建立的 some_lib 模块命名空间中。下次再输入 import some_lib 时,就会得到这个模块命名空间的一个引用。而这对于 IPython 的交互式代码开发模式就会有一个问题。

比如,用 %run 执行的某段脚本中包含了某个刚刚做了修改的模块。假设我们有一个 sample_script.py 文件,其中有如下代码:


In [ ]:
import some_lib

x = 4
y = [1,34,5,6]
result = some_lib.get_answer(x,y)

如果在执行了 %run sample_script.py 后又对 some_lib.py 进行了修改,下次再执行 %run sample_script.py 时候,将仍然会使用老版本的some_lib。其原因在于python是一种“一次加载”系统。不像 matplab等,它会自动应用代码修改。

那么怎么解决这个问题呢?

第一个办法是使用内置的reload函数,即将 sample_script.py 修改成


In [ ]:
import some_lib
reload(some_lib)

x = 4
y = [1,34,5,6]
result = some_lib.get_answer(x,y)

这样,就可以保证每次执行 sample_script.py 时候都能使用最新的 some_lib 了。不过这个办法有个问题,当依赖变得更强时,就需要在很多地插入 reload.

第二个办法可以弥补上述第一个办法的弊端。IPython 提供了一个特殊的 dreload 函数 (非魔术函数) 来解决模块的“深度”重加载。如果执行 import some_lib 之后在输入 derealod(some_lib),则它会尝试重新加载 some_lib 及其所有的依赖项。遗憾的是,这个办法也不是“屡试不爽”的,但倘若失效的,重新启动 IPython 就可以解决所有加载问题。

代码设计提示

作者说这个问题不好讲,但是他在日常生活中的确发现了一些高层次的原则。

  1. 保留有意义的对象和数据

  2. 扁平结构要比嵌套结构好:嵌套结构犹如洋葱,想要调试需要剥掉好多层。(这种思想源自于Zen of Python by Tim Peters. 在jupyter notebook中输入 import this可以看到这首诗)

  3. 无惧大文件。这样可以减少模块的反复加载,编辑脚本时候也可以减少跳转。维护也更加方便。维护更大的模块会更实用且更加符合python的特点。


In [1]:
import this


The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

高级python功能

让你的类对IPython更加友好

IPython 力求为各种对象呈现一个友好的字符串表示。对于许多对象(如字典、列表、组等),内置的pprint 模块就能给出漂亮的格式。但是对于我们自己所定义的那些类,必须自己格式化进行输出。假设我们以后下面这个简单的类:


In [4]:
class Message:
    def __init__(self, msg):
        self.msg = msg

如果像下面这样写,我们会发现这个类的默认输出很不好看:


In [5]:
x = Message('I have secret')

In [6]:
x


Out[6]:
<__main__.Message at 0x163154a2080>

由于IPython会获取repr方法返回的字符串(具体方法是 output = repr(obj)),并将其显示到控制台上。因此,我们可以为上面那个类添加一个简单的 repr 方法以得到一个更有意义的输出形式:


In [11]:
class Message:
    def __init__(self,msg):
        self.msg = msg
    
    def __repr__(self):
        return('Message: %s' % self.msg)

In [12]:
x = Message('I have a secret')

In [13]:
x


Out[13]:
Message: I have a secret

个性化和配置

IPython shell 在外观和行为方面的大部分内容都是可以进行配置的。下面是能够通过配置做的部分事情:

  • 修改颜色方案

  • 修改输入输出提示符

  • 去掉 out 提示符跟下一个 In 提示符之间的空行

  • 执行任意 Python 语句。这些语句可以用于引入所有常用的东西,还可以做一些你希望每次启动 IPython 都发生的事情。

  • 启用 IPython 扩展,如 line_profiler 中的魔术命令 %lprun

  • 定义我们自己的魔术命令或者系统别名

所有这些设置都在一个叫做 ipython_config.py 的文件中,可以在 ~/.config/ipython 目录中找到。Linux和windows系统目录略有点小区别。对于我自己来说,我在git bash on windows 上的目录是:~/.ipython/profile_default/ipython_config.py

一个实用的功能是,利用 ipython_config.py,我们可以拥有多个个性化设置。假设我们想专门为某个特定程序或者项目量身定做 IPython 配置。输入下面这样的命令即可新建一个新的个性化配置文件:


In [ ]:
ipython profile create secret_project
#这会创建一个新的配置文件,目录在 :~/.ipython/profile_secret_project/ipython_config.py

然后编辑新建的这个 profile_secret_project 中的配置文件,再用如下方式启动它:


In [ ]:
ipython --profile=secret_project