计算后台线程中任意生成器的简单工具
prefetch_generator的Python项目详细描述
#基于http://stackoverflow.com/questions/7323664/python-generator-pre-fetch
这是一个单独的函数包,它将任意生成器转换为后台thead生成器,在并行后台thead中预取多批数据。
如果有一个计算量很大的进程(CPU或GPU),在生成器消耗其他资源(磁盘IO/从数据库加载/如果有未使用的内核,则有更多CPU)的同时迭代处理生成器中的小批量,则这非常有用。
默认情况下,这两个进程将不断等待对方完成。如果让生成器在预取模式下工作(参见下面的示例),它们将并行工作,可能会节省您的GPU时间。
我们个人在用TensorFlow和Theano(烤宽面条、块、生的等)迭代小批量数据进行深入学习时使用预取生成器。
快速使用示例(ipython笔记本)-https://github.com/justheuristic/prefetch_generator/blob/master/example.ipynb
- 此包包含两个对象
- 背景生成器(任何其他生成器[,max_prefetch=something])
- @背景([max_prefetch=somethind])装饰器
用法是
#对于backgroundgenerator中的批处理(my_minibatch_iterator): #doit()
或
#@背景() #def迭代小批量(某些参数): #如果是真的: #x=读取重文件() #x=算数(x) #y=wget_来自_pornhub() #你几乎什么都做() #产量x_批次,y_批次
更多细节写在背景生成器文档中 帮助(背景生成器)