Skip to content

Instantly share code, notes, and snippets.

@georgexsh
Created October 30, 2017 07:31
Show Gist options
  • Save georgexsh/61ca502637f22a8499a781240a1d30ec to your computer and use it in GitHub Desktop.
Save georgexsh/61ca502637f22a8499a781240a1d30ec to your computer and use it in GitHub Desktop.
share socket object with multiprocessing in python2.7
import os
import time
from multiprocessing import Process, Manager
import socket
import copy_reg
from multiprocessing.reduction import rebuild_socket, reduce_socket
copy_reg.pickle(socket.socket, reduce_socket, rebuild_socket)
manager = Manager()
sockets = manager.dict()
def func():
pid = os.getpid()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 6152))
sockets[pid] = s
while 1:
print 'in child', pid, sockets
time.sleep(1)
ps = []
for i in range(2):
proc = Process(target=func)
proc.start()
ps.append(proc)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 6152))
sockets[0] = s
for p in ps:
p.join()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment