Он видит то, что вы хотите, возможно - хотя у меня нет возможности проверить это с помощью полного кода, я провел некоторое тестирование на терминале, и все прошло нормально -
Открытое соединение 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
, но должен быть обходной путь.