169 похожих чатов

Всем привет, снова вопрос по мультипотокам. > registerDoParallel(4) + system.time( + foreach (i

= 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 и им подобные эффективно работать с суб-листами в пределах одного листа?

5 ответов

25 просмотров
Stan- Автор вопроса

У меня точно идеально работает stringr на 1.3М текстов: делают пачку str_replace_all, и всё идет отлично. Просто тут специфичный пакет, не рассчитанный на обработку кучи текстов, а я пытаюсь сделать именно 1 строка = 1 датафрейм, и чтобы функция отработала так для всех случаев.

1 .verbose = TRUE — будет много информации. 2. Чем списки плохи? Почему нет? Только надо правильно передавать данные в воркеры. 3. Идеологически лучше сформировать наборы заданий. 4. Лучше так гнать задание: foreach(it = iter(fnames_tbl, by = "row")

Stan- Автор вопроса
Ilya Shutov
1 .verbose = TRUE — будет много информации. 2. Чем...

О, сейчас попробую. Спасибо. Хочу сегодня добить дебаг и запустить задачу. Со виолончелью 10 потоков делают работу за 15 секунд на 1.3М, а в один поток 270:))

Stan
О, сейчас попробую. Спасибо. Хочу сегодня добить д...

Могу предположить, что это проблема связана с 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

Stan
О, сейчас попробую. Спасибо. Хочу сегодня добить д...

вот тут вот интересный текст: https://stackoverflow.com/questions/57349958/how-to-use-foreach-and-dopar-with-an-r6-class-in-r

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта