【问题标题】:Python programs communicatingPython 程序通信
【发布时间】:2024-04-24 03:20:01
【问题描述】:

我有一个(可能)简单的问题,互联网似乎无济于事。我想让几个 python 程序在另一个 python 程序中交互,但不知道如何让它们相互输入。我最终的想法是(作为概念证明)让一个程序充当环境,而其他程序充当该环境中的生物。让我澄清一下:我相信你已经看到了那些模拟自然环境的程序,其中的生物相互作用。我想在较小的范围内做同样的事情(如果有的话,用文字代替花哨的 3d 图形)。这样做的最终目标不是拥有一个复杂的生态系统,而是看看我可以将程序之间的通信推进多远(以及我的计算机的能力)。 附:我想继续从 IDLE 或命令行运行它。

【问题讨论】:

  • 看一下子流程模块
  • 进程可以通过多种方式进行通信。您可能会发现 zeromq 是一个不错的选择。

标签: python controls communication


【解决方案1】:

您可以简单地设置模块结构。例如,编写一个main.py,它可以从其他“程序”调用或导入数据。

在您的情况下,我会使用面向对象的方法。

例如,如果您的程序设置如下:

main.py
prog1.py
等等

我会创建一个main.py,例如,像

import prog1
creature_obj = prog1.new_creature() # where new_creature is a class in prog1
...

【讨论】:

  • 好的,我认为这是我想做的方式,但我不知道如何使prog1.py 可用于main.py。您能否解释一下或发布指向 YouTube 视频的链接?我对这种事情还没有太多经验。
  • 我得到了import prog1 部分,但不是之前的内容。
  • 其实,没关系。我使用了这个网站:[ibiblio.org/g2swap/byteofpython/read/making-modules.html] 并弄清楚了。感谢您的帮助!
【解决方案2】:

在程序或组件之间交换消息有很多选择:

  1. 您可以编写其他程序可以读取和操作的输出文件。您想看看消费者是否可以查看目录中的文件并在文件到达时做出反应。
  2. 您可以使它们成为分布式组件,通过套接字或一些更高级别的协议(如 HTTP)交换消息。通信可以是同步的或异步的。
  3. 您可以将它们连接为写入消息队列或主题的生产者和侦听队列或主题以获取事件的消费者。

【讨论】: