Python ThreadPoolExecutor передает синтаксис - PullRequest
0 голосов
/ 09 ноября 2019

Читая о Python ThreadPoolExecutors, я нашел эту очень полезную страницу:

https://pymotw.com/3/concurrent.futures/

Большую часть я понимаю после прочтения и пробования некоторых примеров. Однако есть один фрагмент, на котором я потерялся. В разделе под заголовком: Ожидание задач в любом порядке

Существует следующее:

wait_for = [
    ex.submit(task, i)
    for i in range(5, 0, -1)
]

Я вижу, что он делает, но не понимаю, почемуработает. Почему ex.submit ДО цикла "for"? Я не видел этот синтаксис Python раньше, и я не нашел других примеров, подобных этому.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2019

этот код такой же, как и этот:

wait_for = []
for i in range(5, 0, -1):
    wait_for.append(ex.submit(task, i))

, когда цикл завершен, в wait_for есть 5 объектов, если емкость ThreadPool больше 5.

1 голос
/ 09 ноября 2019

Это понимание списка для компактного создания списка. Он состоит из выражения, создающего элементы списка, одного или нескольких циклов for для перебора чего-то, что обеспечивает базовые данные для выражения, и, необязательно, выражения if для фильтрации нежелательных элементов.

...