进程间C#python实时

进程间C#python实时,c#,python,real-time,communication,C#,Python,Real Time,Communication,我正在做一个项目,其中一个应用程序用C#编写,另一个用Python编写。 C#应用程序将持续分析数据流,并在每次检测到感兴趣的内容时发出一个标志。因此,每次出现事件时,我的Python应用程序都必须读取事件并继续执行自己的进程,同时继续发送其他标志。 正如您所了解的,C#应用程序不会等到Python one完成计算后再发送另一个标志 所以我想知道是否有可能创建一个sub/pub(C#作为发布者,Python作为订阅者),如果有,我怎么做,你认为这是个好主意吗? 我在这个领域是个新手,你能告诉我还

我正在做一个项目,其中一个应用程序用C#编写,另一个用Python编写。 C#应用程序将持续分析数据流,并在每次检测到感兴趣的内容时发出一个标志。因此,每次出现事件时,我的Python应用程序都必须读取事件并继续执行自己的进程,同时继续发送其他标志。 正如您所了解的,C#应用程序不会等到Python one完成计算后再发送另一个标志

所以我想知道是否有可能创建一个sub/pub(C#作为发布者,Python作为订阅者),如果有,我怎么做,你认为这是个好主意吗? 我在这个领域是个新手,你能告诉我还有其他的可能性吗


谢谢你的帮助。

太棒了。。。或者。

最简单的方法是
管道
通信。另一种不建议使用的简单方法是
SOCKET
编程。管道和命名管道是不同进程(通过不同编程语言)之间通信的良好解决方案<代码>套接字编程与此类似,但可能需要更高的访问级别,并且安全性可能更低

其他类型的设备似乎无法使用

有关更多信息,请参阅:

    • 您可以使用我们的和库。我已经在生产中成功地使用了这些库,以便使RFID阅读器(来自Impinj)与我们的遥测系统进行通信(实际上,集成在遥测系统中)。RFID阅读器有一个C#API,我们在遥测系统中大量使用Python

      最简单的测试用例是乒乓球应用程序,下面是使用这些库时的情况:

      pinger.cs:

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      using aktos_dcs_cs;
      
      namespace pinger
      {
          class Pinger : Actor
          {
              public void handle_PingMessage(Dictionary<string, object> msg)
              {
                  Console.WriteLine("Pinger handled PingMessage: {0} ", msg["text"]);
      
                  string msg_ser = @"
                          {""PongMessage"": 
                              {""text"": ""this is proper message from csharp implementation""}
                          }
                      ";
                  System.Threading.Thread.Sleep(2000);
                  send(msg_ser);
              }
      
          }
      
      
          class Program
          {
              static void Main(string[] args)
              {
                  Pinger x = new Pinger(); 
                  Actor.wait_all(); 
              }
          }
      }
      

      有什么原因导致套接字无法工作吗?有什么令人信服的原因让您想在两个独立的平台上进行此操作吗?谢谢大家的回答。“Redis和sockets都是我认为我可以使用的,现在我对它更有信心了。”spender在这个项目中工作的不同的人,他们都希望保留他们喜欢的语言。因此,研究硬件的同事使用C语言,分析来自传感器的数据的同事将使用C语言,其余的我将使用Python语言。欢迎对这一事实发表评论。如果您想将两个应用程序连接在一起,sockets甚至更好的通用数据标记语言(如xml或json)将解决您的许多问题。你想在这两个平台之间找到一个中间地带,最好的办法是在两边都可以阅读/创建一些东西。非常感谢,我会尝试一下,看看哪一个更方便。提问者似乎在windows上,就像C#一样。在windows上,使用套接字不需要获得额外的权限。您的术语“访问级别”非常模糊。它可以是ACL或windows上的完整性级别。但在使用套接字时,这两种方法都没有问题——您需要一些管理权限才能打开Chrome吗?为了安全起见,我不明白你想说什么,但听到管道和插座在本地使用时有不同的安全考虑显然是不可接受的。建议使用插座,因为它比管道快得多。
      from aktos_dcs import *
      
      class Pinger(Actor):
          def handle_PingMessage(self, msg_raw):
              msg = get_msg_body(msg_raw)
              print "Pinger got ping message: ", msg['text'], (time.time() - msg_raw['timestamp'])
              sleep(2)
              self.send({'PongMessage': {'text': "Hello ponger, this is pinger 1!"}})
      
      if __name__ == "__main__":
          ProxyActor()
          pinger = Pinger()
          pinger.send({'PongMessage': {'text': "Hello ponger, this is STARTUP MESSAGE!"}})
      
          wait_all()