这个问题通常由于子进程未能正确地关闭数据库连接而引起。应该在进程完成后显式地关闭连接,并在主进程的所有子进程结束后调用Process.join()。下面是一个示例:
from multiprocessing import Process
import psycopg2
def worker():
conn = psycopg2.connect(database="my_db", user="my_user", password="my_password", host="localhost")
# do something with the connection
conn.close()
if __name__ == '__main__':
# create/process the workers here
processes = []
for i in range(4):
p = Process(target=worker)
processes.append(p)
p.start()
# wait for all workers to complete
for p in processes:
p.join()
# close the database connection in the main process
conn = psycopg2.connect(database="my_db", user="my_user", password="my_password", host="localhost")
conn.close()