= 1:100) %dopar% {
+ create_tcorpus(small_set[i,], doc_column = 'ID_doc', text_columns = 'Article_Proc', udpipe_model = "english-gum")
+ })
Error in { : task 1 failed - "cannot open the connection"
Timing stopped at: 83.97 2.248 31.04
Бывали ли у кого-то такое, что при настройке 4 потоков валится с ошибкой cannot open the connection, а когда 3 потока или меньше — все работает. Функция create_tcorpus из спец.пакета corpustools: функция берет строчку с текстом, а потом превращает в что-то типа S4 / R6 сложный список.
Вся проблема именно в том, что при увеличении числа потоков итератор не хочет работать. А когда работаю с векторами — там хоть 10 потоков, все ок.
Может ли foreach и им подобные эффективно работать с суб-листами в пределах одного листа?
У меня точно идеально работает stringr на 1.3М текстов: делают пачку str_replace_all, и всё идет отлично. Просто тут специфичный пакет, не рассчитанный на обработку кучи текстов, а я пытаюсь сделать именно 1 строка = 1 датафрейм, и чтобы функция отработала так для всех случаев.
1 .verbose = TRUE — будет много информации. 2. Чем списки плохи? Почему нет? Только надо правильно передавать данные в воркеры. 3. Идеологически лучше сформировать наборы заданий. 4. Лучше так гнать задание: foreach(it = iter(fnames_tbl, by = "row")
О, сейчас попробую. Спасибо. Хочу сегодня добить дебаг и запустить задачу. Со виолончелью 10 потоков делают работу за 15 секунд на 1.3М, а в один поток 270:))
Могу предположить, что это проблема связана с R6, не передать его. Можно через файлы поступить и объединить после. Либо в базовые типы преобразовать. От задачи зависит. library(corpustools) colnames(sotu_texts) #> [1] "id" "date" "party" "text" "president" tc <- create_tcorpus(sotu_texts, doc_column = 'id', text_columns = 'text') dput(tc) #> <environment> class(tc) #> [1] "tCorpus" "R6" qs::qsave(tc, "tc.qs") m <- qs::qread("tc.qs") dput(m) #> <environment> m #> tCorpus containing 90827 tokens #> grouped by documents (n = 1090) #> contains: #> - 3 columns in $tokens: doc_id, token_id, token #> - 4 columns in $meta: doc_id, date, party, president
вот тут вот интересный текст: https://stackoverflow.com/questions/57349958/how-to-use-foreach-and-dopar-with-an-r6-class-in-r
Обсуждают сегодня