Forwarding you to

Memory efficiency of parallel IO operations in Python

Gevent is an alternative approach to parallelisation and it brings coroutines to pre Python 3.5 code. Under the hood it takes advantage of small, independent pseudo-thread Greenlets, but also spawns some threads for internal needs. The overall memory footprint is very similar to multithreading.