跳转到主要内容

mytc的交互式工作IPython魔法命令接口。

项目描述

mypyc_ipython

IPython魔法命令接口,用于与从类型注释Python编译到C扩展的编译器mypyc进行交互式工作。

安装

支持的Python版本为3.6或更高版本。

$ pip install mypyc-ipython

用法

您可以使用此库如%%cython 魔法命令

  1. 执行 %load_ext mypyc_ipython 以启用魔法。
  2. %%mypyc 代码单元中编写代码。
In [1]: %load_ext mypyc_ipython

In [2]: %%mypyc
   ...: def my_fibonacci(n: int) -> int:
   ...:     if n <= 2:
   ...:         return 1
   ...:     else:
   ...:         return my_fibonacci(n-1) + my_fibonacci(n-2)
   ...:

In [3]: my_fibonacci(10)
Out[3]: 55

In [4]: def py_fibonacci(n: int) -> int:
   ...:     if n <= 2:
   ...:         return 1
   ...:     else:
   ...:         return py_fibonacci(n-1) + py_fibonacci(n-2)
   ...:

In [5]: py_fibonacci(10)
Out[5]: 55

In [6]: %load_ext cython

In [7]: %%cython
   ...: cpdef int cy_fibonacci(int n):
   ...:     if n <= 2:
   ...:         return 1
   ...:     else:
   ...:         return cy_fibonacci(n-1) + cy_fibonacci(n-2)
   ...:

In [8]: cy_fibonacci(10)
Out[8]: 55

In [9]: %timeit py_fibonacci(10)
10.3 µs ± 30.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [10]: %timeit my_fibonacci(10)
848 ns ± 5.82 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [11]: %timeit cy_fibonacci(10)
142 ns ± 1.18 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [12]:

单元格的内容将使用代码的哈希值作为文件名写入目录 IPYTHONDIR/mypyc 中的 .py 文件。然后该文件被mytc化并编译。生成的模块将被导入,并将其所有符号注入到用户命名空间中。

如果您想禁用缓存,可以使用如下的 --force 选项

In [2]: %%mypyc --force
   ...: def my_fibonacci(n: int) -> int:
   ...:     if n <= 2:
   ...:         return 1
   ...:     else:
   ...:         return my_fibonacci(n-1) + my_fibonacci(n-2)

作者

Masashi Shibata (@c-bata)

许可

MIT许可

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

mypyc_ipython-0.0.2.tar.gz (4.7 kB 查看哈希值)

上传时间 源代码

构建分发

mypyc_ipython-0.0.2-py3-none-any.whl (5.6 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面