Python多线程内存刷新

时间:2019-01-21 16:08:32

标签: python python-3.x python-multithreading

我正在尝试将一堆数据从一个数据库传输到另一个数据库。

我正在使用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(),但似乎没有帮助...

谢谢

0 个答案:

没有答案