一个 python 进程为另一个 python 进程提供信息
One python process providing information for another python process
我知道类似的问题偶尔会出现
communication between 2 programs in python
要么
Communication between two python scripts
但我的问题要简单得多。我有两个 python 进程连续 运行 在 同一台 计算机和从进程 偶尔 需要主进程的三个浮点数.
不是编程专家,我会在计算机内存的某个地方预留三个浮点槽,主进程会不断更新,而从进程需要信息时会简单地读取这个内存槽。所以 本质上 master 一直在说话,而 slave 只在需要信息时才听。
不费吹灰之力就能做到吗?如果可能的话,尽量保持简单的答案,因为我不是编程专家。
这取决于您不是编程专家的水平,您需要多快更新这些数字,以及 OS 您在做什么。
综上所述,"Easy" 方法只是将它们写入一个(或多个)文件,从属进程会监视这些文件的变化,并在它们更新时读取。
难道这两个进程(下面的 foo 和 bar)不只是主进程的线程吗?
import time
import threading
x = 0.0
y = 0.0
z = 0.0
lock = threading.RLock()
def foo():
global lock
while True:
time.sleep(10)
with lock:
print x, y, z
def bar():
global x, y, z, lock
while True:
time.sleep(2)
with lock:
x += 0.5
y += 0.6
z += 0.7
fooThread = threading.Thread(target=foo)
fooThread.daemon = True
barThread = threading.Thread(target=bar)
barThread.daemon = True
barThread.start()
fooThread.start()
'lock' 可能不是必需的,但在多线程编程中是个好习惯。
最后还是用了RPyC库(https://rpyc.readthedocs.org/en/latest/)。简单易用,功能强大。
我知道类似的问题偶尔会出现
communication between 2 programs in python 要么 Communication between two python scripts
但我的问题要简单得多。我有两个 python 进程连续 运行 在 同一台 计算机和从进程 偶尔 需要主进程的三个浮点数.
不是编程专家,我会在计算机内存的某个地方预留三个浮点槽,主进程会不断更新,而从进程需要信息时会简单地读取这个内存槽。所以 本质上 master 一直在说话,而 slave 只在需要信息时才听。
不费吹灰之力就能做到吗?如果可能的话,尽量保持简单的答案,因为我不是编程专家。
这取决于您不是编程专家的水平,您需要多快更新这些数字,以及 OS 您在做什么。
综上所述,"Easy" 方法只是将它们写入一个(或多个)文件,从属进程会监视这些文件的变化,并在它们更新时读取。
难道这两个进程(下面的 foo 和 bar)不只是主进程的线程吗?
import time
import threading
x = 0.0
y = 0.0
z = 0.0
lock = threading.RLock()
def foo():
global lock
while True:
time.sleep(10)
with lock:
print x, y, z
def bar():
global x, y, z, lock
while True:
time.sleep(2)
with lock:
x += 0.5
y += 0.6
z += 0.7
fooThread = threading.Thread(target=foo)
fooThread.daemon = True
barThread = threading.Thread(target=bar)
barThread.daemon = True
barThread.start()
fooThread.start()
'lock' 可能不是必需的,但在多线程编程中是个好习惯。
最后还是用了RPyC库(https://rpyc.readthedocs.org/en/latest/)。简单易用,功能强大。