Groovy XmlSlurper с параллельной работой
Я анализирую некоторые RSS-канал RSS и необходимо расширить некоторые URL-адреса в поле описания.
Теперь мой код написан как
items.collect {
it.description = FullText.expand(it.description)
return it
}
В этом случае URL-адреса внутри запрашиваются один за другим, что делает его процесс очень медленным.
Поэтому я хочу сделать что-то вроде
items.collectParallel {
it.description = FullText.expand(it.description)
return it
}
Но вместо этого я получаю сообщение об ошибке:
groovy.lang.MissingMethodException: No signature of method: groovy.util.slurpersupport.NodeChildren.collectParallel() is applicable for argument types
1 ответ
Решение
items.collectParallel
блок должен быть окружен GParsPool.withPool
блок, чтобы иметь collectParallel
и другие доступные методы GPars, такие как:
import static groovyx.gpars.GParsPool.withPool
// ...
withPool {
items.collectParallel {
it.description = FullText.expand(it.description)
return it
}
}