gpt4 book ai didi

python - 在单独运行的 Python 脚本之间传递数据

转载 作者:行者123 更新时间:2023-12-03 20:21:34 25 4
gpt4 key购买 nike

如果我正在运行一个 python 脚本(带有完整的 Tkinter GUI 和所有内容)并且我想将它收集的实时数据(内部存储在数组等中)传递给另一个 python 脚本,那么最好的方法是什么?

我不能简单地将脚本 A 导入脚本 B,因为它将创建脚本 A 的新实例,而不是访问已经运行的脚本 A 中的任何变量。

我能想到的唯一方法是让脚本 A 写入文件,然后脚本 B 从文件中获取数据。但是,这不太理想,因为如果脚本 B 尝试读取脚本 A 已经写入的文件,则可能会发生一些不好的事情。另外,我正在寻找两个程序之间更快的通信速度。

编辑:
以下是所要求的示例。我知道为什么这不起作用,但这是需要实现的基本前提。我的源代码很长而且很遗憾是保密的,所以在这里没有帮助。总之,脚本 A 正在运行 Tkinter 并收集数据,而脚本 B 是 views.py 作为 Django 的一部分,但我希望这可以作为 Python 的一部分来实现。

脚本 A

import time

i = 0

def return_data():
return i

if __name__ == "__main__":
while True:
i = i + 1
print i
time.sleep(.01)

脚本 B
import time
from scriptA import return_data

if __name__ == '__main__':
while True:
print return_data() # from script A
time.sleep(1)

最佳答案

您可以使用 multiprocessing实现 Pipe 的模块两个模块之间。然后,您可以将其中一个模块作为进程启动并使用管道与其通信。使用管道最好的部分是您还可以通过它传递 python 对象,如 dict,list。

前任:
mp2.py:

from multiprocessing import Process,Queue,Pipe
from mp1 import f

if __name__ == '__main__':
parent_conn,child_conn = Pipe()
p = Process(target=f, args=(child_conn,))
p.start()
print(parent_conn.recv()) # prints "Hello"

mp1.py:
from multiprocessing import Process,Pipe

def f(child_conn):
msg = "Hello"
child_conn.send(msg)
child_conn.close()

关于python - 在单独运行的 Python 脚本之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43861164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com