.remove
- это операция O (N) для deque
объектов.
Итак, в целом, если есть M None, у вас есть поведение O (M * N).
Этого вполне можно избежать. Один простой способ - использовать filter
:
records = deque(filter(None, pool.imap_unordered(val_comp, combinations(index_tups,2))))
Если вы хотите отфильтровать их после того, как у вас уже есть records
deque, вы можете сделать что-то вроде:
records = deque(x for x in records if x is not None)
, который создает новый deque
.