Create DB connection and maintain on multiple processes (multiprocessing)
Try to isolate the creation of your connection in the Consumer constructor, then give it to the executed Task :
import multiprocessing, time, psycopg2class Consumer(multiprocessing.Process): def __init__(self, task_queue, result_queue): multiprocessing.Process.__init__(self) self.task_queue = task_queue self.result_queue = result_queue self.pyConn = psycopg2.connect("dbname='geobase_1' host = 'localhost'") self.pyConn.set_isolation_level(0) def run(self): proc_name = self.name while True: next_task = self.task_queue.get() if next_task is None: print 'Tasks Complete' self.task_queue.task_done() break answer = next_task(connection=self.pyConn) self.task_queue.task_done() self.result_queue.put(answer) returnclass Task(object): def __init__(self, a): self.a = a def __call__(self, connection=None): pyConn = connection pyCursor1 = pyConn.cursor() procQuery = 'UPDATE city SET gid_fkey = gid FROM country WHERE ST_within((SELECT the_geom FROM city WHERE city_id = %s), country.the_geom) AND city_id = %s' % (self.a, self.a) pyCursor1.execute(procQuery) print 'What is self?' print self.a return self.a def __str__(self): return 'ARC' def run(self): print 'IN'