コード例 #1
0
    print("KONIEC", pid, len(known_processes), current_thread().name)
    if not known_processes:
        try:
            global app_proc
            app_proc.kill()
            app_proc = None
        except SystemError:
            print('Error during killing chroma app')


# access global variables safely
processing_scheduler = ThreadPoolScheduler(1)

scanner = Observable.create(lambda subscriber: scan_processes(subscriber)) \
    .distinct() \
    .subscribe_on(NewThreadScheduler()) \
    .publish()

# start chroma app when valid process shows up
scanner.observe_on(processing_scheduler) \
    .subscribe(handle_audio_start)

# tear down chroma app when all valid processes are terminated
scanner.flat_map(lambda pid: Observable.from_callable(wait_for_end(pid), NewThreadScheduler())) \
    .observe_on(processing_scheduler) \
    .subscribe(handle_audio_end)

scanner.connect()

input()