有没有办法在ipython中进入函数的第一行.我想象的东西看起来像:
%step foo(1, 2)
Run Code Online (Sandbox Code Playgroud)
它运行ipdb并在第一行设置断点foo.
如果我现在想要这样做,我必须转到函数的源代码并添加import ipdb; ipdb.set_trace()一行.
我正在使用iPython来运行我的代码.我想知道是否有任何模块或命令可以让我检查一个对象的内存使用情况.例如:
In [1]: a = range(10000)
In [2]: %memusage a
Out[2]: 1MB
Run Code Online (Sandbox Code Playgroud)
类似于%memusage <object>并返回对象使用的内存.
重复
我正在尝试使用IPython的并行环境,到目前为止,它看起来很棒,但我遇到了问题.让我们说我有一个在库中定义的函数
def func(a,b):
...
Run Code Online (Sandbox Code Playgroud)
当我想要评估a的一个值和b的一堆值时,我使用的.
[func(myA, b) for b in myLongList]
Run Code Online (Sandbox Code Playgroud)
显然,真正的功能更复杂,但问题的实质是它需要多个参数,我只想映射其中一个.问题是map,@ dview.parallel等映射了所有参数.
所以我想说我想得到func(myA,myLongList)的答案.这样做的显而易见的方法是咖喱,或者是functools.partial,或者是
dview.map_sync(lambda b: func(myA, b), myLongList)
Run Code Online (Sandbox Code Playgroud)
但是,这在远程计算机上无法正常工作.原因是当lambda表达式被pickle时,myA的值不包括在内,而是使用远程机器上本地作用域的myA值.当闭包被腌制时,它们关闭的变量不会.
我能想到的两种实际工作方式是为每个参数手动构建列表,并对所有参数进行映射工作,
dview.map_sync(func, [myA]*len(myLongList), myLongList)
Run Code Online (Sandbox Code Playgroud)
或者以恐怖的方式将数据用作函数的默认参数,强制它被腌制:
# Can't use a lambda here b/c lambdas don't use default arguments :(
def parallelFunc(b, myA = myA):
return func(myA, b)
dview.map_sync(parallelFunc, myLongList)
Run Code Online (Sandbox Code Playgroud)
真的,当真正的函数需要很多参数并且更复杂时,这一切似乎都非常扭曲.是否有一些惯用的方法呢?就像是
@parallel(mapOver='b')
def bigLongFn(a, b):
...
Run Code Online (Sandbox Code Playgroud)
但据我所知,没有像'mapOver'这样的东西存在.我可能已经知道如何实现它...这只是一个非常基本的操作,应该存在支持,所以我想检查我是否遗漏了一些东西.
大多数IPython的"神奇功能"的工作对我罚款马上蝙蝠: %hist,%time,%prun等.然而,我注意到,%lprun无法IPython中找到,因为我想最初安装它.
然后我发现我应该安装line_profiler模块.我已经安装了这个模块,但似乎仍然无法使魔术功能正常工作.如果我试图打电话%lprun,iPython仍然无法找到该功能.如果我用全名(line_profiler.magic_lprun)调用它,可以找到该函数,但我根本无法使用它.下面是我所做的一个例子(从"Python for Data Analysis"一书中逐步采用):
%prun[在:]
def add_and_sum(x, y):
added = x + y
summed = added.sum(axis=1)
return summed
x = randn(3000, 3000)
y = randn(3000, 3000)
add_and_sum(x, y)
Run Code Online (Sandbox Code Playgroud)
有了这个,我得到了一个很好的答案,正如所料:
[输出:]
array([-23.6223074 , -10.08590736, -31.2957222 , ..., -14.17271747,
63.84057725, -50.28469621])
Run Code Online (Sandbox Code Playgroud)
我可以做剖析魔术功能%prun:
[在:]
%prun add_and_sum(x, y)
Run Code Online (Sandbox Code Playgroud)
[输出:]
6 function calls in 0.042 seconds
Ordered by: internal time
ncalls tottime percall cumtime …Run Code Online (Sandbox Code Playgroud) 我有跟随简单的情节,我想显示原点轴(x,y).我已经有网格,但我需要强调x,y轴.

这是我的代码:
x = linspace(0.2,10,100)
plot(x, 1/x)
plot(x, log(x))
axis('equal')
grid()
Run Code Online (Sandbox Code Playgroud)
我见过这个问题.接受的答案建议使用"轴脊柱",只是链接到一些例子.然而,使用子图表的例子太复杂了.我无法弄清楚,如何在我的简单示例中使用"Axis spine".
是否有一种简单的方法来检查iPython笔记本代码在编写时是否符合PEP8?
IPython/Jupyter有很多Scala/Spark内核:
有没有人知道它们与IPython/Jupyter最兼容,最适合使用:
在每个iPython(Jupyter)笔记本的第一个单元格中,我几乎总是键入:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
Run Code Online (Sandbox Code Playgroud)
是否有办法使这个单元格出现在我默认创建的每个新笔记本的顶部?
例如,我可以在.ipynb某处保存模板文件,在创建新笔记本时由iPython复制吗?
(我发现了这个问题,但它似乎更多的是关于css而不是单元格中的默认内容.)
如何将IPython笔记本文件(带.ipynb扩展名的json )转换为常规.py模块?
当我!pip install geocoder在Jupyter Notebook中运行时,我获得与pip install geocoder在终端中运行相同的输出,但是当我尝试导入时,地理编码器包不可用.
我正在使用Ubuntu 14.04,Anaconda 4.0.0和pip 8.1.2
安装地理编码器:
!pip install geocoder
The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the …Run Code Online (Sandbox Code Playgroud)