gpt4 book ai didi

python - 将 python session 传递给用另一个版本的 python 编写的脚本

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:23 25 4
gpt4 key购买 nike

例如,如果我有:

(1) ScriptA,用 2.X 编写,因为它需要 2.X 库

(2) ScriptB,用3.X写的,因为它需要3.X库

有没有办法做到以下几点?:

-> ScriptA 调用 scriptB(切换 Python 版本),传递一个 session 对象而不序列化它。

使用命令行可以切换 python 版本,但不可能传递 session 对象...

-- 编辑 --

session ,我的意思是,例如,我有一个到给定服务器的打开的 TCP/IP 连接,我不想在第二个脚本中打开一个新连接

最佳答案

它看到你想要的是可能的 - 虽然我不知道如何用完整的代码测试它,但我在终端上做了一些测试,一切顺利 -

打开的 TCP/IP 连接是一种进程资源,可以与进程的子进程和兄弟进程共享。

因此,没有什么可以阻止您使用传统的 Posix 调用来启动新进程、运行 python3 脚本,并在其中仅使用“fileno”属性重新创建套接字。

“fileno”是在操作系统级别标识连接的内容,它是一个可以传递给 socket.socket 构造函数的参数。

因此,在调用脚本中,您执行以下操作:

import os
....

pid = os.fork()
if pid == 0:
os.execv("/usr/bin/python3.2", ["python3.2", path_to_python3_script, mysocket.fileno")

在python3.2脚本上:

import sys
import socket
socket_fileno = int(sys.argv[1])
mysocket = socket.socket(fileno=socket_fileno)

顺便说一句,您没有指定您正在使用的操作系统 - 如果您运气不好使用 Windows,它不会使用 fork,但应该有一个解决方法。

关于python - 将 python session 传递给用另一个版本的 python 编写的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8907478/

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