在两个独立的 python 程序之间传输数据有哪些好方法?
What are some good ways to transfer data between two independent python programs?
我的设备后台有两个独立的 python 模块 运行。即使我需要它们是独立的,我也需要每隔几秒将一些字符串数据从一个传输到另一个。我目前正在通过将数据写入一个文本文件来做到这一点,该文本文件不断受到两者的监控。有没有更好的方法呢?如果可能,速度更快、更安全。
您正在寻找的解决方案是命名管道,也称为fifo,这是[=16]的一种机制=]进程间通信。根据man-pages
:
"A FIFO special file (a named pipe) can be opened by
读取或写入的多个进程。当进程是
通过 FIFO 交换数据,内核在内部传递所有数据
而不将其写入文件系统。因此,FIFO 专用文件
文件系统上没有内容;文件系统条目仅用于
作为参考点,以便进程可以使用
文件系统中的名称。"
这是 python
:
中命名管道的使用示例
import os
NAMED_PIPE = 'mypipe'
try:
os.mkfifo(NAMED_PIPE)
except OSError:
raise
with open(NAMED_PIPE) as fifo:
while True:
data = fifo.read()
if len(data) == 0:
break
print('[x] Data: {}'.format(data))
我的设备后台有两个独立的 python 模块 运行。即使我需要它们是独立的,我也需要每隔几秒将一些字符串数据从一个传输到另一个。我目前正在通过将数据写入一个文本文件来做到这一点,该文本文件不断受到两者的监控。有没有更好的方法呢?如果可能,速度更快、更安全。
您正在寻找的解决方案是命名管道,也称为fifo,这是[=16]的一种机制=]进程间通信。根据man-pages
:
"A FIFO special file (a named pipe) can be opened by
读取或写入的多个进程。当进程是
通过 FIFO 交换数据,内核在内部传递所有数据
而不将其写入文件系统。因此,FIFO 专用文件
文件系统上没有内容;文件系统条目仅用于
作为参考点,以便进程可以使用
文件系统中的名称。"
这是 python
:
import os
NAMED_PIPE = 'mypipe'
try:
os.mkfifo(NAMED_PIPE)
except OSError:
raise
with open(NAMED_PIPE) as fifo:
while True:
data = fifo.read()
if len(data) == 0:
break
print('[x] Data: {}'.format(data))