То, как перечислить список нестроки, возражает в Python?

Циклоп-реакция (я являюсь автором этой библиотеки), предоставляет класс StreamUtils для обработки потоков. Одной из функций, которые он предоставляет, является futureOperations, который обеспечивает доступ к стандартным операциям терминала Stream (а затем и к некоторым) с поворотом - поток выполняется асинхронно, а результат возвращается внутри CompletableFuture. .eg

 Stream stream = Stream.of(1,2,3,4,5,6)
                                       .map(i->i+2);
 CompletableFuture> asyncResult =  StreamUtils.futureOperations(stream,
                                             Executors.newFixedThreadPool(1))
                                       .collect(Collectors.toList());

Существует также удобный класс ReactiveSeq, который упаковывает Stream и обеспечивает те же функциональные возможности, с приятным беглым API

 CompletableFuture> asyncResult = ReactiveSeq.of(1,2,3,4,5,6)
                                       .map(i->i+2)
                                       .futureOperations(
                                             Executors.newFixedThreadPool(1))
                                       .collect(Collectors.toList());

Как указал Адам циклопов -react FutureStreams предназначены для асинхронной обработки данных (путем смешивания Futures и Streams) - он особенно подходит для многопоточных операций, которые включают блокировку ввода-вывода (например, чтение файлов, выполнение вызовов db, выполнение вызовов rest и т. д. ).

5
задан SilentGhost 7 June 2009 в 16:32
поделиться

1 ответ

Вот питонический способ написать этот цикл:

for index, obj in enumerate(objects):
  # Use index, obj.

enumerate работает с любой последовательностью, независимо от типов ее элементов. Это встроенная функция.

Изменить:

После выполнения некоторых timeit тестов с использованием Python 2.5 я обнаружил, что enumerate немного медленнее:

>>> timeit.Timer('for i in xrange(len(seq)): x = i + seq[i]', 'seq = range(100)').timeit()
10.322299003601074
>>> timeit.Timer('for i, e in enumerate(seq): x = i + e', 'seq = range(100)').timeit()
11.850601196289062
13
ответ дан 18 December 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: