ipython笔记本:如何并行化外部脚本

2024-03-27

我正在尝试使用 ipython 并行库中的并行计算。但我对此知之甚少,并且我发现对于对并行计算一无所知的人来说很难阅读该文档。

有趣的是,我发现的所有教程都只是重复使用文档中的示例,并具有相同的解释,在我看来,这是毫无用处的。

基本上我想做的是在后台运行几个脚本,以便它们同时执行。在 bash 中,它会是这样的:

for my_file in $(cat list_file); do
    python pgm.py my_file &
done

但是 Ipython Notebook 的 bash 解释器不处理后台模式。

看来解决方案是使用 ipython 的并行库。

我试过 :

from IPython.parallel import Client
rc = Client()
rc.block = True
dview = rc[:2] # I take only 2 engines

但后来我被困住了。我不知道如何同时运行两次(或更多)相同的脚本或 pgm。

Thanks.


一年后,我终于得到了我想要的。

1)创建一个函数,用于在不同的 cpu 上执行您想要执行的操作。这里它只是从 bash 调用一个脚本!神奇的 ipython 命令。我想这会与call()功能。

def my_func(my_file):
    !python pgm.py {my_file}

不要忘记{}使用时!

另请注意,路径my_file应该是绝对的,因为集群是您启动笔记本的位置(当执行jupyter notebook or ipython notebook)这不一定是你所在的地方。

2)使用您想要的 CPU 数量启动您的 ipython 笔记本集群。 等待 2 秒并执行以下单元格:

from IPython import parallel
rc = parallel.Client()
view = rc.load_balanced_view()

3)获取您要处理的文件列表:

files = list_of_files

4)将您的函数与所有文件异步映射到view您刚刚创建的引擎。 (不确定措辞)。

r = view.map_async(my_func, files)

当它运行时,您可以在笔记本上执行其他操作(它运行在“背景“!)。您也可以致电r.wait_interactive()以交互方式枚举已处理的文件数、到目前为止花费的时间以及剩余的文件数。这将阻止您运行其他单元(但您可以中断它)。

如果您的文件多于引擎,不用担心,一旦引擎完成 1 个文件,它们就会被处理。

希望这会帮助其他人!

本教程可能会有所帮助:

http://nbviewer.ipython.org/github/minrk/IPython-parallel-tutorial/blob/master/Index.ipynb http://nbviewer.ipython.org/github/minrk/IPython-parallel-tutorial/blob/master/Index.ipynb

另请注意,我仍然有IPython 2.3.1, 不知道以后有没有改变Jupyter.

编辑:仍然适用于 Jupyter,请参阅此处了解您可能遇到的差异和潜在问题 https://stackoverflow.com/questions/32759056/fail-to-import-ipython-parallel-in-jupyter


请注意,如果您在函数中使用外部库,则需要使用以下命令将它们导入到不同的引擎上:

%px import numpy as np

or

%%px
import numpy as np
import pandas as pd

与变量和其他函数一样,您需要将它们推送到引擎名称空间:

rc[:].push(dict(
                foo=foo,
                bar=bar))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ipython笔记本:如何并行化外部脚本 的相关文章

  • 使用 C# 读取数百万个小文件

    我有数百万个每天生成的日志文件 我需要读取所有这些文件并将其放在一起作为单个文件 以便在其他应用程序中对其进行一些处理 我正在寻找最快的方法来做到这一点 目前我正在使用线程 任务和并行 如下所示 Parallel For 0 files L
  • Julia:如何让多个工作人员访问模块中的函数?

    我有以下测试模块 MyMod jl 来在 Julia 中存储一些测试函数 一些核心函数是串行编写的 其他函数并行调用核心函数 module MyMod export Dummy distribute data getfrom recombi
  • 分布式张量流中的并行进程

    我有带有训练参数的张量流神经网络 它是代理的 策略 网络正在核心程序的主张量流会话的训练循环中进行更新 在每个训练周期结束时 我需要将该网络传递给几个并行进程 工作人员 这些进程将使用它来从代理策略与环境的交互中收集样本 我需要并行执行 因
  • 如何在 CUDA 中执行多个矩阵乘法?

    我有一个方阵数组int M 10 以便M i 定位第一个元素i th 矩阵 我想将所有矩阵相乘M i 通过另一个矩阵N 这样我就收到了方阵数组int P 10 作为输出 我看到有不同的可能性 分配不同元素的计算M i 到不同的线程 例如 我
  • 使用并行的 parLapply:无法访问并行代码中的变量

    我最近得到了一台具有多个核心的计算机 并且正在学习使用并行计算 我相当熟练lapply并被告知parLapply工作原理非常相似 但我没有正确操作它 看来我必须明确地将所有内容放入parLapply使其工作 即要使用的函数 变量等 和lap
  • 如何在 iPython 笔记本中保存单元格的输出

    我希望能够保存 iPython 笔记本的文本输出cell到磁盘上的文件中 我有 2 个额外的要求 要求 能够重新运行单元并用最新的内容覆盖我的输出 还显示笔记本内的输出 我已经弄清楚如何使用 capture将 iPython 笔记本的单元格
  • 如何在 Jupyter 笔记本的 HTML 输出中获取垂直滚动条

    当使用具有 500 行的 Excel 在 Jupyter Notebooks 中运行以下代码时 import pandas as pd pd set option display min rows 50 pd set option disp
  • 单步执行 IPython 中的函数

    有没有办法进入 ipython 中函数的第一行 我想象的东西会是这样的 step foo 1 2 运行的ipdb并在第一行设置断点foo 如果我现在想这样做 我必须转到该函数的源代码并添加一个import ipdb ipdb set tra
  • 使 Jupyter Notebook 中的单元格输出水平滚动?

    I have a long Sympy expression that I d like to get printed with a horizontal scrollbar beneath it Is it possible to do
  • 在 Tensorflow 中运行 CNN 时训练和测试的奇怪值

    我一直在尝试使用自己的数据来训练和评估卷积神经网络 其中包含 200 个训练图像和 20 个测试图像 我的完整脚本在这里 在 Tensorflow 中使用我自己的数据运行卷积网络时出错 https stackoverflow com que
  • Jupyter Notebook 上未显示结构化流输出

    我有两个笔记本 第一个笔记本正在使用 tweepy 从 twitter 读取推文并将其写入套接字 其他笔记本正在使用 Spark 结构化流 Python 从该套接字读取推文并将其结果写入控制台 不幸的是我没有在 jupyter 控制台上得到
  • 为什么 Jupyter 突然将数据框显示为基于文本的?

    我已经使用 jupyter 笔记本有一段时间了 如果我这样做的话df head 它总是返回一个格式良好的表格格式 现在我调用了数据 我得到了这个 为什么 我该如何解决它 import pandas as pd df pd read csv
  • 如何获取 Jupyter Notebook 的“markdown”单元格中的制表符空间

    我正在编写描述性 ipynb 文件 需要在带有空格的 markdown 中给出输出 但无法添加制表符空间来打印结构化数据 键入 nbsp 以添加一个空格 输入 ensp 添加 2 个空格 输入 emsp 添加 4 个空格 使用不间断空格 n
  • 在 __device/global__ CUDA 内核中动态分配内存

    根据CUDA 编程指南 http developer download nvidia com compute cuda 3 2 prod toolkit docs CUDA C Programming Guide pdf 第 122 页 可
  • python sympy计算余弦函数积分时出错

    因此 我直接尝试从 sympy 文档中获取示例 但出现了一个奇怪的错误 我正在使用 python 3 2 和 sympy 0 7 3 我一直在 ipython 笔记本上工作 尽管我认为这不会有什么不同 错误是 每当我创建 x 符号并尝试集成
  • fork() 不并行运行

    我对编程过程很陌生 我的基本程序并没有真正按照我的预期工作 我在 Oracle VM 上的 Ubuntu 18 04 上运行此代码 这是代码 include
  • 找不到 Jupyter 命令 `jupyter-lab`

    我尝试在我的 Kubuntu 机器上安装 jupyter lab 如果我使用 pip3 install jupyter jupyterlab 安装 jupyter lab 则命令 jupyter notebook 完全可以正常工作 但是 如
  • 如何在MPI中传递2D数组并使用C语言创建动态标签值?

    我是 MPI 编程新手 我有一个 8 x 10 数组 需要用它来并行查找每行的总和 在等级 0 进程 0 中 它将使用 2 维数组生成 8 x 10 矩阵 然后我会用tagnumber 作为数组的第一个索引值 行号 这样 我可以使用唯一的缓
  • 从 foreach 循环赋值

    我想并行化一个循环 例如 td lt data frame cbind c rep 1 4 2 rep 1 5 rep 1 10 2 names td lt c val id res lt rep NA NROW td for i in l
  • Python 垃圾收集有时在 Jupyter Notebook 中不起作用

    我的一些 Jupyter 笔记本经常出现 RAM 不足的情况 而且我似乎无法释放不再需要的内存 这是一个例子 import gc thing Thing result thing do something thing None gc col

随机推荐

  • 修复损坏的编码(使用 Python)

    我有一堆文本文件包含编码错误的韩语字符 具体来说 字符似乎是用 EUC KR 编码的 但文件本身是用 UTF8 BOM 保存的 到目前为止 我成功修复了一个文件 内容如下 使用 EditPlus 打开文件 它显示文件的编码是UTF8 BOM
  • 如何比较 BigDecimals 以使我的测试通过? [复制]

    这个问题在这里已经有答案了 我有以下同样奇怪的情况JUnit test 所以我有这个测试方法 Test public void getNavInfoTest throws ParseException TirAliquotaRamoI ex
  • 使用 HTTP 客户端的 Kerberos 连接

    我正在使用 Kerberos 身份验证编写 HTTP 连接 我有 HTTP 1 1 401 未经授权 您能建议我应该检查什么吗 我认为有一些诡计 但我没有看到 也许我应该将标头 WWW Authenticate 设置为 Negotiate
  • 在netsuite中添加新的事务状态

    我正在开发 netsuite 并希望为客户账单创建新状态 我想要的新状态是 注销 注销后状态显示 已全额付款 我希望它显示 注销 我找到了很多帮助将当前状态更改为另一个现有的默认状态 例如 让我们举个例子 以下是尝试查找待履行销售订单时要应
  • VSCode 自定义宏

    我目前正在尝试使用 VSCode 但我不知道如何正确定义宏并将它们绑定到特定的按键绑定 我习惯使用 Sublime text 并且我定义了一些宏 可以帮助我更快地打字并减少错误 我想要获得的宏如下 alt shift q 哪些类型 并将光标
  • 设置普通石墨烯嵌套查询

    我已经成功创建了一个响应的全石墨烯查询 query person id Mary id name 我现在想扩展它 以便能够循环遍历所有人并为每个人返回类似的数据 query people count allPersons name 我如何获
  • 文件 -----stdarg.h 和 float.h 没有这样的文件或目录吗?

    我正在 xcode 项目中使用 mm 扩展名上的一些文件来编译这些文件 在添加此编译器后 我们在构建设置中添加了 LLVM GCC 4 2 这显示了错误 Developer Platforms iPhoneSimulator platfor
  • 插入等值元素

    我目前正在研究二叉搜索树 我想知道如果您尝试插入与根具有相同值的元素 您会怎么做 它去哪里 BST的定义是它是有序集 因此不允许插入重复项 这通常是由于在 BST 之上构建了更复杂的结构 根据所需的行为 您可能希望在插入重复项时引发异常 错
  • PHP:从网站提取 HTML 数据[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将自定义日志发送到 Google Play 开发者控制台?

    我已将我的 Android 应用程序上传到谷歌游戏 我的应用程序运行良好 但在某些设备上 它存在一些问题 每当我的应用程序崩溃时 Google Play 开发者控制台都会收到该错误 就像是 java lang RuntimeExceptio
  • 当我在终端中创建新分支时,为什么图表不显示从主分支分支出来的新分支?

    当我在终端中创建一个名为 testing123 的新分支时 为什么 Sourcetree 中的图表不显示从主分支分支出来的新分支 Sourcetree 识别新分支 但它不会从图中的主分支分支出来 为什么会出现这种情况 如何使 Sourcet
  • 如何设置 NSTextView 的默认字体?

    我正在使用禁用 富文本 选项的文本视图来显示一些纯文本 我找不到设置默认字体的方法 如果我在 IB 中输入一些文本 无论如何我都不想要 我可以在 IB 界面中设置字体 但是当用户删除字体并开始键入时 文本会更改为不同的字体和大小 我在这里阅
  • 用 python 替换文件名字符

    我有一些代码将单词 manual 添加到一堆文件名的末尾 我需要更改脚本 以便删除文件名的最后两个字母 ES 然后将其替换为 ES Manual 例如 AC 5400ES txt gt AC 5400 ES manual txt 我如何将该
  • 无法通过 Microsoft Graph API(C# 控制台)发送电子邮件

    我按照这 2 个链接创建了一个控制台应用程序 用于使用 Graph API 发送电子邮件 Microsoft Graph API 无法发送电子邮件 C 控制台 https stackoverflow com questions 574112
  • Docker Buildkit --mount=type=cache 用于缓存 .NET 6 的 Nuget 包

    我写了一个Dockerfile使用 Docker buildx mount type cache设置缓存我的 NuGet 包以加快构建速度 正如所示 这似乎在 NET 5 中有效其他问题 https stackoverflow com qu
  • 嵌入到java中的网络浏览器[重复]

    这个问题在这里已经有答案了 可能的重复 有没有办法在Java中嵌入浏览器 https stackoverflow com questions 48249 is there a way to embed a browser in java 我
  • 如何在 For Each...Next 循环中获取对象的索引?

    我使用以下语法来循环列表集合 For Each PropertyActor As JCPropertyActor In MyProperty PropertyActors i IndexOf PropertyActor Next 如何获取循
  • Selenium 下载完整的 html 页面

    我正在学习使用 Python Selenium 和 BeautifulSoup 进行网页抓取 目前 我正在尝试抓取Google搜索趋势上的热门搜索http www google com trends hottrends pn p5 http
  • 按索引动态添加项目到 List 而不使用 .Add()

    我试图将项目添加到列表中without动态使用 Add 请注意 由于我的项目的性质 我无法使用字典或简单数组甚至 HashSet 等替代数据结构 我需要一个锻炼解决方案来解决以下问题 List
  • ipython笔记本:如何并行化外部脚本

    我正在尝试使用 ipython 并行库中的并行计算 但我对此知之甚少 并且我发现对于对并行计算一无所知的人来说很难阅读该文档 有趣的是 我发现的所有教程都只是重复使用文档中的示例 并具有相同的解释 在我看来 这是毫无用处的 基本上我想做的是