标签: message-passing

Python中的并行性

在Python中实现并行性有哪些选择?我想对一些非常大的栅格执行一堆CPU绑定计算,并希望将它们并行化.来自C背景,我熟悉三种并行方法:

  1. 消息传递过程,可能分布在集群中,例如MPI.
  2. 显式共享内存并行,使用pthreadsfork(),pipe()等.人
  3. 隐式共享内存并行,使用OpenMP.

决定使用方法是权衡利弊.

在Python中,有哪些方法可用,它们的特征是什么?是否有可群集的MPI克隆?实现共享内存并行性的首选方法是什么?我听说过GIL的问题,以及对tasklet的引用.

简而言之,在选择它们之前,我需要了解Python中的不同并行化策略?

python parallel-processing multithreading message-passing

22
推荐指数
3
解决办法
1万
查看次数

TPL Dataflow,如何将项目转发到许多链接目标块中的一个特定目标块?

我正在寻找一个TPL数据流块解决方案,它可以容纳多个项目,可以链接到多个目标块,但是它能够将项目转发到仅通过过滤器/谓词的特定目标块.在任何时候都不应该将项目同时传递到多个目标块,始终只能传递给与过滤器匹配的项目,或者可以丢弃该项目.我不喜欢BroadCastBlock,因为如果我理解正确,它不能保证传送(或者是吗?)并且过滤是在目标块侧完成的,这意味着BroadCastBlock基本上将每个项目的副本发送到所有linkedTo目标块.如果我理解正确,它也不会在任何时候持有多个项目.我不想使用Post/Async但维护LinkTo链.

有没有办法绕过完整的自定义数据流块?或者我误解了BroadCastBlock的工作原理?不幸的是,实际上没有太多文档可以详细介绍并涵盖用例.任何想法都受到高度赞赏.

c# message-passing task-parallel-library actor tpl-dataflow

20
推荐指数
2
解决办法
5403
查看次数

19
推荐指数
2
解决办法
2万
查看次数

如何从一个Delphi程序实例发送字符串到另一个实例?

从我的程序的一个实例发送字符串到我的程序的另一个实例的最佳和最简单的方法是什么?接收程序必须使用接收的字符串作为参数来执行过程.

我开始阅读DDE,但我感到困惑.我还有其他选择,实现这个的最简单方法是什么?

delphi message-passing dde

18
推荐指数
4
解决办法
2万
查看次数

使用MPI分散不同大小的矩阵块

(假设所有矩阵都按行主顺序存储.)说明问题的一个例子是在3x3网格上分布10x10矩阵,以便每个节点中子矩阵的大小看起来像

|-----+-----+-----|
| 3x3 | 3x3 | 3x4 |
|-----+-----+-----|
| 3x3 | 3x3 | 3x4 |
|-----+-----+-----|
| 4x3 | 4x3 | 4x4 |
|-----+-----+-----|
Run Code Online (Sandbox Code Playgroud)

我在Stackoverflow上看过很多帖子(例如使用MPIMPI分区矩阵将C块中的2D数组块发送到块中).但它们只处理相同大小的块(在这种情况下,我们可以简单地使用 MPI_Type_vectorMPI_Type_create_subarray只有一个MPI_Scatterv调用).

所以,我想知道在MPI中将矩阵分散到处理器网格中的最有效方法是什么,其中每个处理器都有一个具有指定大小的块.

PS我也看了MPI_Type_create_darray,但似乎没有让你为每个处理器指定块大小.

c parallel-processing message-passing distributed-computing mpi

16
推荐指数
1
解决办法
4562
查看次数

使用MessageChannel HTML5进行Web Workers通信

我想实现网络工作者之间的沟通.我阅读了W3C文档,我发现MessageChannel是其中一种方法,但在阅读MessageChannel时,我无法理解如何使用messagechannel实现工作者之间的通信.

我从MSDN得到了这个

http://msdn.microsoft.com/en-in/library/ie/hh673525(v=vs.85).aspx

这里也没有适当的文档.

我需要知道,我如何使用MessageChannel与webworkers沟通?

这是演示抛出DATA_CLONE_ERR

var worker = new Worker("sub1_worker.js");
    worker.onmessage = function(e) {
        $("#log").append("<br>" + e.data);
    }
    var channel = new MessageChannel();

    worker.postMessage("ping", [channel.port2]);

    channel.port1.onmessage = function(event) {
        // Message is in event.data
        alert("Message is: " + event.data);
    }

    channel.port1.postMessage('hello');



    $("#send1").click(function() {
        var msg = $("#msg").val();
        if (msg && msg != "start")
            worker.postMessage("ping2");

        $("#msg").val("");

    })
    $("#send2").click(function() {
        var msg = $("#msg").val();
        if (msg && msg != "start")
            worker.postMessage("ping3",[channel.port2]);
        $("#msg").val("");

    })
Run Code Online (Sandbox Code Playgroud)

和工人

onmessage = getMessage; …
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5 message-passing web-worker

13
推荐指数
2
解决办法
5336
查看次数

在 android/flutter 中实现粘性服务

我需要在 flutter 应用程序中添加原生粘性后台服务,以实现两件事:

  1. 从启动时开始并无限期地在后台运行
  2. 以消息传递方式与主要 Dart 活动交换数据

但是,我找不到任何有用的文档。目前看来,您必须选择完全原生或放弃使用低级功能并仅关注 UI(直到有人从帽子里拿出一个特定的插件)。

因此,我的问题如下:从基本的 flutter 项目开始,实现这种集成的最简单方法是什么?

谢谢

boot android message-passing background-process flutter

13
推荐指数
1
解决办法
1071
查看次数

将消息从background.js传递给popup.js

我正在尝试实现我自己的chrome扩展,在某个特定事件上创建浏览器通知并使用background.js中计算的数据填充弹出窗口

这是mymanifest文件:

{
    "name": "Dummy name",
    "description": "Description",
    "manifest_version": 2,
    "version": "1.1.3",
    "icons": {
        "16": "icon_16.png",
        "48": "icon_48.png",
        "128": "icon_128.png",
        "256": "icon_256.png"
    },
    "browser_action": {
        "default_icon": "icon_48.png",
        "default_title": "Test",
        "default_popup": "popup.html"
    },
    "permissions": ["background","webRequest","webRequestBlocking","webNavigation","tabs","notifications"],
    "background": {
        "scripts":["jquery-1.8.1.min.js","classy.js","background.js"]
    }
}
Run Code Online (Sandbox Code Playgroud)

我在background.js中调用sendMessage

show : function(result) {
    var that = this;
    chrome.extension.sendMessage({greeting: "hello"}, function(response) {
        console.log(response);
    });

    if(window.webkitNotifications) {
        var notification = webkitNotifications.createHTMLNotification('notification.html');
        notification.show();
        setTimeout(function(){
            notification.cancel();
            }, '7000');
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在popup.js中的消息监听器(来自chrome扩展示例)

chrome.extension.onMessage.addListener(
  function(request, sender, sendResponse) {
    console.log(sender.tab ?
                "from a content script:" + …
Run Code Online (Sandbox Code Playgroud)

messaging google-chrome message-passing google-chrome-extension

12
推荐指数
3
解决办法
2万
查看次数

Akka Pattern - 演员树,回复原始来源

这是一个设计问题;

假设我有一组演员,他们会做一堆处理.处理由客户端/连接参与者启动(即树是服务器).最终客户端演员想要一个响应.即我有一个看起来像这样的演员系统.

    ActorA  <---reqData--- Client_Actor
       | msgA                    /|\                      
      \|/                         |                 
    ActorB                        |                  
  msgB |  \ msgD                  | 
      \|/  \/                     | 
    ActorC  ActorD---------msgY-->|
       |_____________msgX_________|
Run Code Online (Sandbox Code Playgroud)

客户端系统想要的响应是叶子参与者的输出(即ActorC和/或ActorD).树中的这些参与者可能正在与外部系统进行交互.该树可以是一组预定义的可能路由的演员(即,Client_actor只有一个actorref到演员树的根,ActorA).

问题是管理将最终/叶子演员的响应(msgX和/或msgY)发送回客户端演员的最佳模式是什么?

我可以想到以下几种选择;

  • 为每个连接客户端创建一个树,让演员跟踪发件人,当他们获得msgXmsgY发送给原始发件人引用时,将消息传递回树中.即每个演员都会保留原始发件人的参考号.
  • 以某种方式向下发送消息中的Client_Actorref reqData并为树中使用的所有消息复制它,以便叶子演员可以直接回复Client_actor...这似乎是最高性能的选项.不知道如何做到这一点(我在某种方式上考虑了包含客户端参与者的消息案例类的特征)...
  • 以某种方式根据通过树传递的消息中的唯一ID查找客户端actor或使用actorselection(不确定这对远程处理有多好)...
  • 更好的东西...

仅供参考我正在使用Akka 2.2.1.

干杯!

design-patterns scala message-passing akka akka-cluster

12
推荐指数
1
解决办法
2842
查看次数

了解供应点块(按需供应)

我无法理解supply {\xe2\x80\xa6}区块/它们创建的按需供应的用途。

\n

Live supplies (that is, the types that come from a Supplier and get new values whenever that Supplier emits a value) make sense to me \xe2\x80\x93 they\'re a version of asynchronous streams that I can use to broadcast a message from one or more senders to one or more receivers. It\'s easy to see use cases for responding to a live stream of messages: I might want to take an action every time I get …

concurrency message-passing rakudo cro raku

12
推荐指数
1
解决办法
191
查看次数