import multiprocessing as mp import logging import socket import time from random import randint from multiprocessing.reduction import reduce_socket, rebuild_socket logger = mp.log_to_stderr(logging.DEBUG) def worker(queue): while True: reduced_socket = queue.get() print "Next line is supposed to give error in 2.7.2" print reduced_socket[0](*reduced_socket[1]) if __name__ == '__main__': serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serversocket.bind(('',9090)) serversocket.listen(5) num_workers = 5 socket_queue = mp.Queue() worker_processes = [mp.Process(target=worker,args=(socket_queue,)) for i in range(num_workers)] for worker_process in worker_processes: worker_process.daemon = True worker_process.start() while True: client, address = serversocket.accept() client_handle = reduce_socket(client) socket_queue.put(client_handle)