gpt4 book ai didi

python - 这是在 IPython 中分配变量和直接在数组中工作的区别

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:32 25 4
gpt4 key购买 nike

我在玩 IPython 和远程控制:

in:  from IPython Import parallel as p
in: rc=p.client(profile=myprofile)

两者之间存在行为差异

in:  rc[0].block
out: False
in: rc[0].block=True
in: rc[0].block
out: False

in:  view=rc[0]
in: view.block
out: False
in: view.block=True
in: view.block
out: True

我真的不明白什么是 append ?这是为什么 ?赋值是做什么的?

最佳答案

赋值本身什么都不做。 rc 这里是你的客户端。执行 rc[0] 或任何类型的索引,生成并返回一个 DirectView 对象,该对象是具有您在 [] 中指定的任何引擎的 View 。这是生成 View 的简写:它实际上不仅仅是获取特定对象。

因此,这些观点并不是独一无二的。我认为最好的解释方法是举个例子。假设您有 2 个引擎。您希望仅在引擎一上运行某些任务,并希望这些任务阻塞。您只想在引擎一上运行其他引擎,但不希望它们阻塞。您希望在引擎 1 和 2 上运行更多,并且不希望它们阻塞。然后你可以这样做:

view_1_block = rc[0]
view_1_block.block = True
view_2_noblock = rc[0]
view_2_noblock.block = False
view_3_noblock = rc[[0,1]]
view_3_noblock.block = False

然后,您可以使用它们以任何您喜欢的方式运行任务,例如

view_1_block.map(lambda x:x**10, range(32)) # blocks, returns results, runs only on 1
view_3_noblock.map(lambda x:x**10, range(32)) # does not block, returns AsyncResult, runs on 1 and 2

这里没有使用实际的魔法。当您运行 rc[0] 两次时,它会生成两个 View 。第二种观点与第一种不同。当您将 rc[0] 分配给一个变量,然后使用该变量时,您使用的是一个 View ,而不是创建一个新 View 。

iPython 与 Numpy 和 Scipy 一样,有很多速记符号,不一定完全符合 Python 的习语。 [] 和 getitem 尤其如此。一种更纯粹的 Python 编写方法可能是使用更笨拙的 rc.direct_view(1) 等等,这将清楚地表明这不仅仅是获取一个项目,而且是实际上创建一个 View 。

关于python - 这是在 IPython 中分配变量和直接在数组中工作的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15684842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com