gpt4 book ai didi

Python 从运行的脚本中获取变量并传递给另一个 Python 脚本

转载 作者:行者123 更新时间:2023-12-05 07:54:33 25 4
gpt4 key购买 nike

我有一个简短但对我来说非常重要的问题:

我想将变量从一个事件的 python 脚本已经在运行写入另一个 python 脚本。所以我想要这样的东西:

$ cat first.py second.py 
#first.py
def demo():
some_list = []
for i in 'string':
some_list.append( i )
return list

#second.py
from first import demo

some_list = demo()
print some_list

$python second.py
['s', 't', 'r', 'i', 'n', 'g']

我想要我的运行脚本,例如“sent.py”不断地将变量写入某种“工作区”,然后例如通过另一个脚本访问这些变量,例如“get.py”。如果没有它,我必须在 bash 脚本中同时启动这两个脚本。

所以我可能正在寻找一种解决方案,首先将 python 传递给 bash,然后再传递给 python?非常抱歉,我对术语不太熟悉。

我希望大家明白我的意思,我已经尽力解释清楚了。我有点绝望,希望你能帮忙。我已经尝试过并用谷歌搜索了各种东西,但就是没用。

最佳答案

要获得这样的可变工作区,您需要某种形式的进程间通信、共享内存或存储。

它可以像一个具有已知格式(可能是 JSON 或 pickler 序列化)的文件一样简单,并有一个锁定机制来确保读取器等待文件完全写入。可以通过编写者在写入时创建并在完成时删除的单独文件来实现锁定。

进程间通信可以通过套接字实现,TCP 套接字可能是最简单的。您长时间运行的脚本将运行一个 TCP 监听器,读取过程将连接并从中读取。这可能会变得很奇怪,因为 Python 有一个全局解释器锁,并且在这些通信期间必须阻塞。无法执行任何工作。 Twisted 是一个可以解决这个问题的异步框架。协调收听和做其他工作的可用性可能非常棘手。

共享内存具有与文件类似的互斥复杂性,因此它需要有一个专用的内存地址供写入者指定其写锁。

我认为文件是最简单的。长时间运行的进程会完成它的工作,创建锁定文件,将变量序列化为 JSON(或任何你想要的),然后删除锁定文件,然后重复。独立的读取过程将检查锁定文件,如果不存在,它将读取变量文件并根据需要继续使用变量。

关于Python 从运行的脚本中获取变量并传递给另一个 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083454/

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