首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python解释器的两个实例之间进行通信?

如何在python解释器的两个实例之间进行通信?
EN

Stack Overflow用户
提问于 2020-10-21 01:10:18
回答 1查看 428关注 0票数 1

问题

两个python脚本需要相互通信。

…但是有一个小问题。一个是服务(用python编写),当用户的计算机启动(core)时调用,第二个(前端)也是用python和前端技术编写的。所以我们至少有两个不同的python解释器实例。

我尝试过的

使用→不安全的文件,任何进程都可以读取内容。

使用Socket→防火墙存在问题,安全性不是很好。

使用管道(os.pipe())→不在不同的python解释器之间共享。(相同版本),更好的安全性(控制附加组件比控制系统上的每个进程更容易)

有没有其他方法可以做到这一点,我没有尝试过,或者有一个建议可能会有帮助,一个标准库函数或类,一个库或其他东西?

如果前端再次调用内核,几乎需要15秒(请不要谈这个)。我不会让我的用户等待15秒来启动内核。这将导致删除应用程序和一些不友好的词。:)

也许有用

通信必须能够传输超过数千字节。如果它也兼容python2,那就太好了。

在MARTINEAU的回答之后更新

解决方案

多亏了martineauhis answer,我才有可能写一个关于解决方案的代码片段。代码片段:

代码语言:javascript
复制
>>> from multiprocessing import shared_memory
>>> s = shared_memory.SharedMemory("NAME", create=True)
>>> s.buf[0] = 5
>>> # Now in another python shell
>>> import multiprocessing.shared_memory as sm
>>> sm.SharedMemory("NAME", create=False)
>>> s.buf[0] 
5
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-21 04:40:28

您可以尝试一下multiprocessing.shared_memory。它的文档说:"…一个进程可以创建一个具有特定名称的共享内存块,而另一个不同的进程可以附加到使用相同名称的相同共享内存块。

更详细地说:让服务创建一个共享内存实例并为其提供唯一的名称,然后让前端在运行时查找具有该名称的实例(在执行此操作时在调用时指定create=False )。

希望这对你来说是清晰和足够详细的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64450131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档