使用 psycopg2 通过 python 进行多进程

mav*_*k89 2 python postgresql psycopg2 multiprocessing

我正在使用 python 将许多记录添加到 Postgres DB 中,因为我必须插入数百万条记录,我需要并行化 2 个函数:

insert_A(cur)  
insert_B(cur) 
Run Code Online (Sandbox Code Playgroud)

在哪里:

conn=psycopg2.connect(.....)
cur = conn.cursor() 
Run Code Online (Sandbox Code Playgroud)

我尝试了在堆栈溢出的另一篇文章中找到的解决方案,例如:

result1= pool.apply_async(insert_A, cur)  
result2= pool.apply_async(insert_B, cur)  
answer1=result1.get(timeout=15)  
answer2=result2.get(timeout=15)  
Run Code Online (Sandbox Code Playgroud)

但我收到此错误: Traceback (most最近一次调用最后):
File "test.py", line 387, in
answer1=result1.get(timeout=15)
File "/Library/Frameworks/Python.framework/Versions/2.7/ lib/python2.7/multiprocessing/pool.py",第 558 行,在 get
raise self._value
psycopg2.InterfaceError:光标没有连接

有人可以帮助我吗?:(

mav*_*k89 5

最后我是这样解决的:

if __name__ == '__main__':
    p = Process(target=insert_A, args=(ARG,))
    q = Process(target=insert_measurement_real, args=(ARG,))
    p.start()
    q.start()
    p.join()
    q.join()
Run Code Online (Sandbox Code Playgroud)

并在函数内部创建连接,而不是在函数外部创建连接(并将连接作为参数传递)...