问题标签 [ipython-parallel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - python函数的多处理
我如何为我的函数实现多处理。我试过这样但没有奏效。
我有数千个 pdb 或系统文件要通过此功能进行测试。在没有多处理模块的情况下,单核上的一个文件需要 2 小时。任何建议都会有很大帮助。
我的回溯看起来像这样:
bash - 使用 iPython 并行运行 bash 命令
我在 16 核机器上使用 iPython 笔记本(所以有 15 个“引擎”)。如果我运行这个单元...
...然后结果是一个名为 file1.txt 的文件被写入磁盘 15 次。我真正想要的是写入 15 个不同的文件,file1.txt 到 file15.txt。
我对这一切都很陌生,所以我想有一个简单的解决方案!
谢谢,
雷格
python - 使用 IPython 并行记录
我正在尝试在使用 IPython 并行时设置日志记录。具体来说,我想将日志消息从引擎重定向到客户端。因此,与其像在 IPython.parallel 中那样,每个引擎都单独记录到自己的日志文件中- 我可以将自己的日志写入引擎日志吗?,我正在寻找类似如何在 Python 中使用多处理时记录日志?
基于对 IPython 代码库的回顾,我的印象是,这样做的方法是向日志记录模块注册一个 zmq.log.hander.PUBHandler(参见 iploggerapp.py 中的文档)。我已经以各种方式尝试过这个,但似乎没有一个工作。我还尝试通过 IPython.parallel.util 注册一个记录器。connect_engine_logger,但这似乎也没有做任何事情。
更新
我在这个问题上取得了一些进展。如果我在 ipengine_config c.IPEngineApp.log_url 中指定,则 IPython 应用程序的记录器具有相应的 EnginePubHandler。我通过
这表明应用程序记录器对每个引擎都有一个 EnginePUBHandler。接下来,我可以在单独的终端中启动 iplogger 应用程序并查看来自每个引擎的日志消息。
但是,我想要实现的是在笔记本中查看这些日志消息,而不是在单独的终端中。我曾尝试通过系统调用从笔记本中启动 iplogger,但这会崩溃。
python - python多处理到具有多个函数的函数
我的功能类似于使用蒙特卡洛积分法确定 pi 值。该函数基本上是在随机位置插入一个分子并估计能量。我将我的 for 循环转换为一个函数,以使用多处理模块在多个内核上运行。但是我从随机数生成器和所有过程的能量值中得到了相似的值。看起来它多次运行该功能,但报告的结果相似。
用户定义函数列表。为简单起见,没有给出细节。
运行一个 for 循环;
然后我将 for 循环转换为 ;
我只在这里打印了随机位置值。
多谢!
python - numpy数组的ipython并行和非复制发送
我试图了解 IPython 并行的非复制发送/接收 numpy 数组会发生什么。我知道消息的非复制接收是只读的,但这让我期望我收到的 numpy 数组就像一个视图,指向原始数组(至少在共享内存机器上)。然后,我希望如果在其中一个计算节点上修改了 numpy 数组,我在笔记本中对该数组的视图将会更新,但是,情况似乎并非如此。为了演示让我感到困惑的事情,代码
有输出
我认为进行非复制发送的目的是通过让数组的每个视图都指向同一块内存来节省内存,但这里似乎并非如此。幕后发生了什么,我如何误解非复制发送的使用?
我上面的主要问题的上下文是共享内存环境(我的笔记本电脑),但我可能遇到的一个相关问题是 numpy 数组的非复制发送如何工作以及它们在分布式内存情况下的用途是什么,其中计算节点是不同的物理机器,您必须(我假设)通过网络发送 numpy 数组(有效地在接收机器上制作副本),因此查看原始内存位置是没有意义的。
python - 从模块内部将参数推送到多个进程?
“该死的新手”以及这里的这个网站的python,所以请多多包涵。:)
我尝试在多个进程上运行一个函数。它应该在一个带有两个参数的子函数上运行,一个应该由 map_sync 从一个范围传递,另一个应该是静态的,所以我尝试通过“ push ”直接传递它。
以下是我的真实设置的简化示例,以说明我的意思。如果我从我的 iPython Notebook 运行它,它会完美运行:
现在,当我尝试从上面获取整个代码并将其放入名为“mymultitest.py”的模块(完全未更改)中时,它不再起作用:
我做错了什么 - 解决方案是什么?
#### 添加: ####
好的,我有点猜到第一个回复是什么意思,所以我完全从头开始启动内核,并直接在单元格#1 中输入代码,以避免“a”已经被定义为变量。结果相同,完美运行:
明白了吗?从一个模块它仍然不起作用。
ipython - 如何在 IPython 集群中导入模块
我正在尝试将我的一些个人模块导入我的 IPython 集群。我在 Windows Vista 64 位上使用 Anacondas
它给了我这个错误:
我可以在我的 IPython 笔记本的其余部分中导入模块,因为我有这个 .bat 文件来启动 ipython 笔记本:
我正在使用这个类似的代码来启动我的 ip 集群:
为什么这不起作用?
更多信息:
如果我打印出 sys.path,我会得到一个包含 C:\Users\Jon\workspace\bf 的列表
如果我打印出集群的路径,我会得到相同的列表:
进一步的分析:
看起来 ipcluster 和 notebook 正在不同的地方查看 lib。我尝试将 lib 重命名为 mylib。它没有帮助。
ipython-parallel - IPython.parallel 客户端在等待 map_async 的结果时挂起
我在具有 4 个内核的单台机器上运行 7 个工作进程。在等待 map_async 的结果时,我可能对这个循环做出了错误的选择:
result.stdout
随着 7 个进程运行的所有打印输出不断增长,它导致启动地图的控制台挂起。我的 MacBook Pro 上的活动监视器显示 7 个进程仍在运行,并且运行 Controller 的终端仍然处于活动状态。我在这里有什么选择?流程完成后有什么方法可以获取结果吗?
python - 如何在 IPython (Jupyter) Notebook 中的远程机器上添加内核?
本地计算机 (PC) 上 UI 右上角的下拉菜单:
ipython-parallel - 在 IPython Parallel 中控制优先级
可以为提交到 IPython 集群的任务指定任何类型的优先级吗?
我所知道的完成此类事情的唯一技巧是仔细维护任务依赖关系的 DAG,然后,每当提交新的优先任务时,您需要中止所有(未开始的)任务,重建 DAG,然后提交再次完成所有任务。