问题标签 [dispy]

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.

0 投票
1 回答
451 浏览

python - 为什么 dispy 客户端联系时 dispynode 返回“忽略 ping”?

我正在使用一组 Centos6.5 服务器,其中我有一个头节点,其余的是从节点。这些节点通过本地网络 192.168.1.x 上的交换机连接,外部世界不可见。

我正在尝试在头节点上使用 Python Dispy 在从节点上分发 Python 脚本。从节点都在运行 dispynode.py,当我在客户端节点上启动 Dispy 程序时,运行 dispynode.py 的从节点返回“忽略来自 192.168.1.1 的 ping”。然后它就挂起。关于为什么运行 dispynode 的奴隶忽略而不运行作业的任何想法?

谢谢!

0 投票
2 回答
760 浏览

python - 如何在python中实现单程序多数据(spmd)

我阅读了多处理文档。在python中发现可以将任务分配给不同的cpu核心。我喜欢并行运行以下代码(作为开始)。

现在我得到输出为 1 2 3,然后是 1 ....6。但我需要像 1 1 2 2 一样工作,即我想并行运行 proc1 和 proc2(不是一个接一个)。

0 投票
1 回答
163 浏览

python - 有没有办法在 dispy 中将变量传递给 setup()?

我需要将一个变量传递给 dispy 节点的 setup() 方法,这样我就可以告诉节点要从配置文件加载哪个数据集。否则我必须为每个数据集编写一个特定的脚本,这会很痛苦。

所以我想将字符串传递"file.dat"给设置,以便每个节点都可以实例化一次数据(因为它很大)。

0 投票
1 回答
437 浏览

python - 使用 Python 和 Dispy 进行集群:无法连接节点

我正在尝试为学校项目创建一个raspberry-pi cluster使用dispy

只是为了尝试一下,我只使用一个 RPi 作为 anode和我的 pc 作为master请求作业。

在设备及其ip(S)下方:

节点配置

dispynode在我的节点中执行:

在哪里:

  • sudo确保不会有关于许可的问题
  • -i 192.168.1.105告诉节点为通信设置了哪个地址(文档

控制台输出:

我说:“看起来不错!”

主配置

我写了一个小脚python本来测试集群:

在哪里:

  • cluster将是JobCluster具有以下规格的新产品
  • "/bin/ls"是可执行文件的路径,节点的作业
  • nodes包含将接收作业的节点的地址(在这种情况下只有一个,我的 rpi)
  • ip_addr是主站用于通信的地址
  • cluster.stats()打印有关创建的集群的统计信息

我希望只有一个节点已连接,但是当我运行此脚本时,我得到了以下统计信息:

如您所见,没有连接到主节点的 rpi 节点...

创建的也是fault recovery file空的。

如何将节点连接到主节点?

我以错误的方式dispynode或主脚本使用?

注意和有用:

  • Obiuvsly 我已经安装dispy在这两种设备中。
  • 我可以使用 from master 到达节点,ping反之亦然。
  • ufw被禁用。
  • 文档在这里
0 投票
1 回答
558 浏览

ssh - 通过 ssh 隧道将 dispy 与端口转发一起使用

我在远程服务器上运行 dispynode。我正在尝试从我的计算机(客户端)打开一个 SSH 隧道并将 dispyJobCluster 配置为使用此隧道。但它不起作用。我没有配置这个吗?这是我这样做的方式:

(ps。我对分布式和并行计算或网络没有深入的了解,我是一名土木工程师,所以如果我有时不使用正确的技术词汇,请见谅

SSH隧道:

这会将到端口 61 的连接转发到运行dispynode的服务器上的 localhost:21

显示节点:

将侦听端口 21 并使用 localhost 进行传输,这会将其通过隧道返回客户端

使用此 dispyClient JobCluster代码:

当我启动dispy.py时,我在打开 SSH 隧道的命令提示符中收到以下错误:

打开与 localhost:21 的连接以从 127.0.0.1:64027
转发转发端口已关闭

至少我猜这意味着 dipsy 正在尝试访问打开的 SSH 隧道,但我不确定服务器端发生了什么。似乎 dispynode 什么也没收到。在服务器上使用TCPdump运行快速流量捕获可以确认这一点。由于某些未知原因,端口更改为 64027。


我还尝试同时打开 2 个 SSH 隧道:

  • 一种用于客户端到服务器的通信

    plink -v -ssh -L 61:localhost:21 user@myserver.net

  • 一种用于服务器到客户端的通信

    plink -v -ssh -R 20:localhost:60 user@myserver.net

但没有运气。我什至不确定最好使用远程转发还是本地转发


我尝试了 dispy 开发人员自己建议的这个解决方案,但它对我不起作用:

http://sourceforge.net/p/dispy/discussion/1771151/thread/bcad6eaa/

我上面使用的配置是否错误?我应该使用远程转发还是本地转发?为什么端口会自动更改,可能是因为我公司的防火墙阻止了通过我尝试使用的端口的连接吗?以前有没有人设法通过 SSH 隧道运行 dispy ?

0 投票
0 回答
402 浏览

python - 使用 dispy 将工作分配给 ec2 实例

我正在尝试使用 dispy 将工作分配给 ec2 实例。

我关注了:

通过 ssh 隧道将 dispy 与端口转发一起使用

http://dispy.sourceforge.net/dispy.html#cloud

但它不会去任何地方,客户端脚本被挂起并且服务器节点没有收到任何东西。

我现在拥有的是:

从我的机器:

然后在远程机器上:

我得到:

在我运行的客户端机器上:

什么也没有发生,它只是卡住了。谢谢

0 投票
1 回答
126 浏览

distributed-computing - 如何确保使用 dispy 将繁重的任务分配给其他节点?

我目前正在使用 dispy 执行 10 个随机数的阶乘计算,它将任务“分发”到各个节点。但是,如果其中一个计算是大量的阶乘,比如说factorial(100),那么如果该任务需要很长时间,但 dispy仅在单个节点上运行它。

我如何确保 dispy 分解并将此任务分发到其他节点,以便它不会花费太多时间?

这是我到目前为止提出的代码,其中计算了 10 个随机数的阶乘,而第 5 次计算始终是阶乘(100):-

0 投票
3 回答
664 浏览

python - 使用 dispy 在 python 作业中导入模块

我正在使用一个与 dispy 并行执行的程序。我正在使用 dispy 创建任务,然后将其分发到不同的 CPU 执行。

我有标准库并由我开发的库(数据和连接)。

代码是这样的:

`

问题是我需要在主定义中使用数据和连接时它工作正常,如果我将计算调用为函数而不是使用 dispy 库。但是当我这样工作并在计算过程中调用一个数据函数时,它会抛出异常,即数据未定义并打印异常无。

有什么帮助吗?该文档建议使用设置,但我无法弄清楚它是如何工作的。

0 投票
4 回答
2461 浏览

python-3.x - dispy 示例程序挂起

TL;DR:我无法让最基本的dispy示例代码正常运行。为什么不?

细节:

我正在尝试在 python 中进行分布式处理,并且认为dispy库听起来很有趣,因为它具有全面的功能集。

但是,我一直在尝试遵循他们的基本规范程序示例,但我一无所获。

  • 我已经安装了 dispy ( python -m pip install dispy)
  • 我继续使用相同子网地址的另一台机器并运行python dispynode.py. 它似乎有效,因为我得到以下输出:

    2016-06-14 10:33:38 dispynode - dispynode 版本 4.6.14
    2016-06-14 10:33:38 asyncoro - 带有 epoll I/O 通知器的 4.1 版
    2016-06-14 10:33:38 dispynode - 服务8 cpu 在 10.0.48.54:51348

    输入“quit”或“exit”终止dispynode,“stop”停止
    服务,“start”重新启动服务,“cpus”改变使用的CPU,
    其他任何获取状态:

  • 回到我的客户端机器上,我运行从http://dispy.sourceforge.net/_downloads/sample.py下载的示例代码,复制到这里:


当我运行这个(python sample.py)时,它只是挂起。通过 pdb 调试,我看到它最终挂在dispy/__init__.py(117)__call__(). 该行显示self.finish.wait()。finish 只是一个 python 线程,wait()然后进入lib/python3.5/threading.py(531)wait(). 一旦到达等待,它就会挂起。

我试过在客户端机器上运行 dispynode 并得到相同的结果。我已经尝试了很多将节点传递到集群创建中的变体,例如:

我尝试在未cluster.wait()注释的情况下运行,并得到相同的结果。

当我添加日志记录 ( cluster = dispy.JobCluster(compute, loglevel = 10)) 时,我在客户端得到以下输出:

2016-06-14 10:27:01 asyncoro - 带有 epoll I/O 通知程序的 4.1 版
2016-06-14 10:27:01 dispy - dispy client at :51347 2016-06-14 10:27:01 dispy - 存储“_dispy_20160614102701”中的故障恢复信息
2016-06-14 10:27:01 dispy - 待处理的作业:0
2016-06-14 10:27:01 dispy - 待处理的作业:1
2016-06-14 10:27:01 dispy - 待定工作:2
2016-06-14 10:27:01 dispy - 待定工作:3
2016-06-14 10:27:01 dispy - 待定工作:4
2016-06-14 10:27:01 dispy - 待定工作:5
2016-06-14 10:27:01 dispy - 待定工作:6
2016-06-14 10:27:01 dispy - 待定工作:7
2016-06-14 10:27:01 dispy - 待定工作: 8
2016-06-14 10:27:01 显示 - 待定工作:9
2016-06-14 10:27:01 dispy - 待定工作:10

这似乎并不意外,但并不能帮助我弄清楚为什么作业没有运行。

对于它的价值,这里是_dispy_20160614102701.bak:

'_cluster', (0, 207)
'compute_1465918021755', (512, 85)

同样,_dispy_20160614102701.dir:

'_cluster', (0, 207)
'compute_1465918021755', (512, 85)

我没有猜测,除非我使用的是不稳定的版本。

0 投票
1 回答
314 浏览

python - Python dispy - 为依赖项保留包名称

有没有办法保留通过 dispy 的依赖功能传输的 python 模块的包名称?这将允许在有和没有 dispy 上下文的情况下以相同的方式使用包/模块。

简单示例:

模块 mypackage.dispytestDepends:

我希望它拥有的主模块(不起作用):

工作,但丑陋的版本,因为我有很多必须重写的代码: