In article <mailman.61.1291152972.2649.python-l...@python.org>, Valery Khamenya <khame...@gmail.com> wrote: > >However it doesn't look possible to use it to initialize each Pool's >worker with some individual value (I'd wish to be wrong here) > >So, how to initialize each multithreading Pool worker with the >individual values? > >The typical use case might be a connection pool, say, of 3 workers, >where each of 3 workers has its own TCP/IP port. > >from multiprocessing.pool import Pool > >def port_initializer(_port): > global port > port = _port > >def use_connection(some_packet): > global _port > print "sending data over port # %s" % port > >if __name__ == "__main__": > ports=((4001,4002, 4003), ) > p = Pool(3, port_initializer, ports) # oops... :-)
You probably can't use initargs here. Your port_initializer needs to be some kind of class instance that works with multiprocessing and emits one port number when its __call__() method gets invoked. (There may be other ways to accomplish the same effect, but that's what springs to mind.) -- Aahz (a...@pythoncraft.com) <*> http://www.pythoncraft.com/ "Think of it as evolution in action." --Tony Rand -- http://mail.python.org/mailman/listinfo/python-list