yield vs return

import memory_profiler
import time


start = time.time()
print("Before {}Mb".format(memory_profiler.memory_usage()))

def calculation(para):
    result = []
    for i in para:
        result.append(i)
    return result


''' 
return  [52.0] Mb  [56.25390625]Mb           1.644s
yield [51.86328125]Mb  [51.87109375]Mb  0.202s 
'''
res = calculation(range(10000000))
print("After {}Mb".format(memory_profiler.memory_usage()))
print(time.time()-start)

Obviously, generator can boost the performance by saving your memory. It's not holding all of the results in memory. But once you use the list() function, you'll lose this advantage.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容