我有一个读取文件的迭代器,我有一个ThreadPool(8个线程),用iterator
处理这个pool.apply_async
。我遇到的问题是迭代器有可能读取非常大的文件,我不想立即将整个文件加载到内存中。我知道迭代器不加载将数据保存在内存中,但仅在调用next
时返回数据。
我遇到的问题是当我pool.apply_async
迭代器被读到最后创建线程时。该池一次只允许8个线程运行,但我的整个文件现在都在内存中。
我正在寻找的是一个只创建8个线程的池,启动这些线程,当一个线程完成时创建另一个带有iterator.next
数据的线程。这样我就不必将整个文件保存在内存中,当线程准备好处理数据时,我可以获取数据。
希望这是有道理的。我会尽快尝试一些代码。
使用python 2.7