我原本以为我错误地将数据传递给我的子流程,所以我问了一个问题How do I pass object data to other Python multiprocessing processes?。它关闭了一个副本,但经过对该问题的更多研究以及根据其他链接实现队列,我不认为这是问题所在。
部分数据正在进入我的进程,其他一些部分并不是我认为是SQLAlchemy对象的一部分。
什么被放入队列:
我在离开队列的过程中看到的内容:
所以我认为问题归结为SQLAlchemy及其状态。如何在不丢失所有这些数据的情况下将SQLAlchemy结果集传递给进程?
示例代码。
def test_mp(queue):
while True:
file = queue.get(True)
results = dbsession.query(Raw_records).limit(10).all()
inqueue = mp.Queue()
for item in results:
inqueue.put(item)
pool = mp.Pool(4, test_mp, (inqueue,))
pool.close()
pool.join()
编辑:想出" drill_parameters_record"强调它为什么不回来。
必须做.options(joinedload(Raw_records.drill_parameters_record))
但是raw_xml列仍然是空白的。它是一个自定义类型,因此它是一个对象。我用它来创造它。 SQLAlchemy declaring custom UserDefinedType for XML in MSSQL