繁体   English   中英

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

[英]Python get variable from running script and pass to another Python script

我有一个简短但很重要的问题:

我想从已经运行的活动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? 非常抱歉,我对术语不太熟悉。

我希望我的意思明白了,我尽力解释了一下。 我有些绝望,希望您能提供帮助。 我已经尝试过并用Google搜索各种各样的东西,但是那根本没有用。

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

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

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

共享内存与文件具有相似的互斥复杂性,因此共享内存需要一个专用的内存地址,以便编写器指定其写锁定。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM