【发布时间】:2015-12-06 01:33:31
【问题描述】:
我有两个 python 脚本,为了参数,我们称它们为 A 和 B。 A 和 B 都包含一个无限期运行的 while 循环。它们显示了两种不同数据收集设备的实时信息。脚本A 能够接受按键。现在,我想做的是让脚本B 识别脚本A 中的按键。每个脚本都在不同的终端中执行。
如何在两个 python 脚本之间尽可能快地进行通信?我如何在不使用虚拟文件的情况下将 string 或类似的东西从脚本 A 传递到脚本 B?对于一个虚拟文件,我正在处理一个文件,该文件在注册按键时由脚本B 不断读取并由脚本A 写入。
有人能指出我正确的方向吗?
两个脚本都使用 while 循环显示实时数据源。因此,两个脚本都不会停止或等待某事非常重要。
脚本 A:
import sys
import numpy
import select
def heardEnter():
i, o, e = select.select([sys.stdin], [], [], 0.0001)
for s in i:
if s == sys.stdin:
input = sys.stdin.readline()
return True
return False
while True:
if heardEnter():
print "A: Pressed enter"
脚本 B:
while True:
A_press_enter = None
if A_press_enter == "Enter":
print "B: Enter was pressed in script A"
【问题讨论】:
-
为什么你不能把它们放在一个脚本中,或者使用一个线程?他们真的必须在不同的终端吗?
-
您的问题太宽泛了,您可以使用任何IPC method,例如,如果两个脚本都使用
select(),那么使用套接字或管道进行通信可能会很方便。
标签: python pipe subprocess ipc