Как получить наблюдаемый набор в rx (реактивном) канале в Python? - PullRequest
0 голосов
/ 19 марта 2020

Я использую rx для создания одновременной загрузки из нескольких источников.

rx.from_list(files).pipe(
        ops.map(lambda file: self._dataflow()),
        ops.subscribe_on(pool_scheduler)
    ).subscribe(on_next=lambda file: print(file),
                on_error=print,
                on_completed=lambda: print("PROCESS done!"))

Я хочу, чтобы моя функция map возвращала наблюдаемый объект, тип которого возвращается для функции _dataflow(). Если я использую только _dataflow() вместо ops.map(lambda file: self._dataflow()), это работает нормально, однако я хочу использовать некоторое условие, что для любого file в files я бы выбрал различные функции, такие как _dataflow(). Как решить эту проблему?

1 Ответ

1 голос
/ 26 апреля 2020

Если я вас хорошо понимаю, ваш ближайший выбор в оператор слияния :

list=rx.from_list(["set1_file1","set1_file2","set2_file1","set2_file2"])

rx.merge(list.pipe(ops.filter(lambda x:"set1" in x),ops.map(lambda x:x+" from list1 printed")),list.pipe(ops.filter(lambda x:"set2" in x),ops.map(lambda x:x+" from list2 printed"))).subscribe(lambda x:print(x))

Замените лямбды на нужные вам функции отображения.

...