WedX - журнал о программировании и компьютерных науках

Как установить количество потоков для использования по номиналу

Я знаю, что вы можете установить количество потоков, используемых для всех операций .par, например так: collection.parallel.ForkJoinTasks.defaultForkJoinPool.setParallelism(parlevel: Int)

Но можно ли установить количество потоков, которые будут использоваться только для одного вызова .par?


  • Я полагаю, вы могли бы создать для этого отдельный пул, но я не думаю, что это поддерживается на данный момент. 06.02.2012
  • Это больше не работает в 2.10. 08.01.2013
  • возможный дубликат степень параллелизма коллекций scala parallel 12.11.2013

Ответы:


1

Вы можете создать блок, который устанавливает уровень параллелизма, а затем выполнять определенные методы в этом блоке:

def withParallelism[A](n : Int)(block : => A) : A = {
  import collection.parallel.ForkJoinTasks.defaultForkJoinPool._
  val defaultParLevel = getParallelism
  setParallelism(n)
  val ret = block
  setParallelism(defaultParLevel)
  ret
}

И затем назовите это так:

withParallelism(2) {
  (1 to 100).par.map(_ * 2)
}
06.02.2012
  • Мне не нравится то, что он меняет глобальное состояние 17.11.2016
  • Какая это версия Scala & Java, я получаю ошибку компиляции not found: value setParallelism 22.04.2021

  • 2

    В Scala 2.11 вы должны использовать поддержку задач параллельного сбора, например:

    parallelCollection.tasksupport = new ForkJoinTaskSupport(
        new java.util.concurrent.ForkJoinPool(parlevel))
    
    parallelCollection.map( ... )
    

    См. документацию по поддержке задач.

    20.02.2015
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]