它可以識別您想要的內容 - 雖然我沒有如何測試它與一個完整的代碼,我做了一些在終端上的測試,它很好 -
開放的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
,但應該有一個解決辦法。
什麼是「會話對象」? – 2012-01-18 08:59:18
我會嘗試用泡菜,但我不確定它會起作用... – plaes 2012-01-18 09:11:08
@plaes:OP說「沒有序列化」 – 2012-01-18 09:22:53