Я хотел бы использовать Control.Concurrent.Async mapConcurrently
для параллельной загрузки с помощью http-conduit
. Решение here не является достаточным для моего случая, потому что я хотел бы обработать п задачи, но душить количество одновременных рабочих м, где м < н.Запуск параллельных загрузок URL-адресов с рабочим пулом в Haskell
Это не достаточно, либо перейти к mapConcurrently
нескольких кусков м, потому что тогда число активных работников будет иметь тенденцию быть менее м, так как некоторые из задач, будет завершена раньше, чем другие, оставляя зазор использования ,
Есть ли простой способ - почти так же просто, как использовать mapConcurrently
Надеюсь - реализовать рабочий пул, одновременно выполняющий очередь задач до тех пор, пока все задачи не будут выполнены?
Или проще просто сохранить Haskell простым и сделать параллелизм уровня процесса с помощью xargs -P
?
Несколько связанных SO вопрос: http://stackoverflow.com/questions/15191649/are-thread-pools-needed -for-pure-haskell-code – danidiaz