通蟒蛇会议与蟒蛇的另一个版本编写的脚本
举例来说,如果我有:通蟒蛇会议与蟒蛇的另一个版本编写的脚本
(1)SCRIPTA,写在2.X,因为它需要2.X库
(2) scriptB,写在3.X,因为它需要3.X库
有没有办法做到以下几点?:
- > SCRIPTA调用scriptB(开关Python版本),通过会话对象序列化无它。
使用命令行能够切换的Python版本,但没有通过会话对象的可能性...
- 编辑 -
通过会议,我的意思是比如我有一个打开的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)
顺便说一句,你没有指定OS你正在研究 - 如果你运气不好使用Windows,它不会使用fork
,但应该有一个解决办法。
嗨jsbueno,感谢这个想法,我会试试看看它是否有效。顺便说一句,我正在研究windows :-) – 2012-01-18 13:00:08
什么是“会话对象”? – 2012-01-18 08:59:18
我会尝试用泡菜,但我不确定它会起作用... – plaes 2012-01-18 09:11:08
@plaes:OP说“没有序列化” – 2012-01-18 09:22:53