python - 如何在不同conda环境的两个不同python进程之间交换数据?

标签 python conda ipc environment

两个 python 脚本 A 和 B 存在兼容性问题,需要单独的 conda 环境。这是场景。当脚本 A 运行时,它向进程 B 发送数据(脚本 B 在不同的终端中运行),进程 B 将输出返回给进程 A(进程 A 无法进入休眠状态)。我一直在使用pickle文件在这两个进程之间交换数据,但这种方法似乎很慢,我想加快速度,这对我的工作来说是必要的。

最佳答案

  1. 使用subprocess使一个程序成为另一个程序的子程序模块并通过 stdin 和 stdout 进行通信。 (最快)(注意你必须在命令中激活其他 anaconda 环境才能启动子进程)
  2. 让一个应用程序成为服务器并连接到本地主机上的套接字,另一个应用程序将成为使用 socket 的客户端模块。 (最有组织且可扩展的解决方案)
  3. 将内存的一部分设为共享内存,两个应用程序都可以使用 multiprocessing.shared_memory 访问、写入和读取该内存。 (需要适当的同步,但可以比一次传输 GB 数据的第一个选项更快),(将其包装在 io.TextIOWrapper 中将使通信变得更加容易,就像使用套接字一样简单)

关于python - 如何在不同conda环境的两个不同python进程之间交换数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73846871/

相关文章:

c# - 从 C# 调用非托管代码 - 返回带有数组的结构

如果 5 行中的任何 3 行满足特定条件,Python 将返回 True

python - 在 pandas/python 中转置 DataFrame,但不是所有列

python - 使用 Python 过滤垃圾邮件

python - 在 MacOS 上创建 conda 环境失败 : ResolvePackageNotFound

linux - 如何从运行在不同内核中的不同进程控制进程

python - 如何从特定的一组域中提取链接?

python - 通过conda安装特定版本的spyder

python - 模块未找到错误: No module named 'conda' after resetting base environment

linux - 在不相关的进程之间使用消息队列