【发布时间】:2017-04-12 10:22:16
【问题描述】:
我正在使用 python 将许多记录添加到 Postgres 数据库中,因为我必须插入数百万条记录,我需要并行化 2 个函数:
insert_A(cur)
insert_B(cur)
地点:
conn=psycopg2.connect(.....)
cur = conn.cursor()
我尝试了在堆栈溢出中的另一篇文章中找到的解决方案,例如:
result1= pool.apply_async(insert_A, cur)
result2= pool.apply_async(insert_B, cur)
answer1=result1.get(timeout=15)
answer2=result2.get(timeout=15)
但我得到了这个错误:
回溯(最近一次通话最后一次):
文件“test.py”,第 387 行,在
answer1=result1.get(超时=15)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/pool.py”,第 558 行,在 get
提高自我价值
psycopg2.InterfaceError:光标没有连接
有人可以帮帮我吗? :(
【问题讨论】:
-
我在另一篇文章中发现的是一种并行化 2 个函数的通用方法,显然与 postgres 及其连接无关...在这里我尝试对其进行调整,但结果...
-
您是否尝试在函数
insert_A和insert_B内建立连接? -
不,它们在不同的表上工作,我需要一个函数在一个内核上工作,另一个函数在另一个内核上工作
-
你应该看看how to exchange objects between processes,因为这两个函数将在两个不同的进程上产生
-
我不明白为什么,因为due函数之间是相互独立的,所以它们不必互相交谈,我只是想有两个进程,每个进程都有自己的功能没有 si 军事与其他部分连接到同一个数据库...
标签: python postgresql multiprocessing psycopg2