我正在尝试将一堆数据从一个数据库传输到另一个数据库。
我正在使用ThreadPoolExecutor运行一个名为“转移”的函数,该函数实际上连接到两个数据库,从相关的源表中选择*,然后插入到目标表中以获得预定义的表列表。
以下代码的问题是,插入语句完成后似乎没有释放内存。因此,一段时间后系统崩溃。
没有表可以超过3.5Gb,我正在使用的系统是30GB RAM。
import concurrent.futures
import gc
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
# Start the load operations
future_transfer = {executor.submit(transfer, table_data): table_data for table_data in table_list}
for future in concurrent.futures.as_completed(future_transfer):
table = future_transfer[future]
try:
(data, table_updated) = future.result()
# gc.collect()
print(str(data) + " inserted for " + table_updated)
except Exception as exc:
print('%r generated an exception: %s' % (table, exc))
函数或线程完成后,有什么方法可以释放或刷新内存?
我尝试了gc.collect(),但似乎没有帮助...
谢谢