summary this ends our exploration of object-oriented programming with topic that isn' very object-oriented concurrency is difficult problem and we've only scratched the surface while the underlying os abstractions of processes and threads do not provide an api that is remotely object-orientedpython offers some really good object-oriented abstractions around them the threading and multiprocessing packages both provide an object-oriented interface to the underlying mechanics futures are able to encapsulate lot of the messy details into single object asyncio uses coroutine objects to make our code read as though it runs synchronouslywhile hiding ugly and complicated implementation details behind very simple loop abstraction thank you for reading python object-oriented programmingsecond edition hope you've enjoyed the ride and are eager to start implementing object-oriented software in all your future projects