observer concurrency note that we have to ensure that the main thread running the program does not terminate (as all the observables are now running in their own threadsby waiting for user input the output from this version islambda received lambda received lambda received lambda received lambda received lambda received press enter to finish lambda received lambda received lambda received by default the scheduler keyword on the subscribe(method defaults to none indicating that the current thread will be used for the subscription to the observable available schedulers to support different scheduling strategies the rxpy library provides two modules that supply different schedulersthe rx concurrency and rx currency mainloopscheduler the modules contain variety of schedulers including those listed below the following schedulers are available in the rx concurrency moduleimmediatescheduler this schedules an action for immediate execution currentthreadscheduler this schedules activity for the current thread timeoutscheduler this scheduler works via timed callback newthreadscheduler creates scheduler for each unit of work on separate thread threadpoolscheduler this is scheduler that utilises thread pool to execute work this scheduler can act as way of throttling the amount of work carried out concurrently the rx concurrency mainloopschduler module also defines the following schedulersioloopscheduler scheduler that schedules work via the tornado / main event loop pygamescheduler scheduler that schedules works for pygame wxscheduler scheduler for wxpython event loop