https://medium.com/@lennart.dde/harnessing-the-power-of-generators-and-coroutines-in-python-advanced-use-cases-for-performance-and-e4112d18d31c