У меня есть непараллельный код, который я хотел бы распараллелить. Код должен быть смущающе распараллеливаемым, за исключением операций с файлами (запись в несколько файлов и выбор файла для записи несколько стохастический и потенциально может быть одинаковым на разных процессорах). С пакетами doMC
и foreach
должен ли я обрабатывать блокировку файлов или она уже обрабатывается пакетом? Я не привязан к doMC
, я выбрал его, потому что я все еще буду вносить много изменений в свой код, и мне кажется, что с ним просто работать.
блокировка файлов в R doMC
Ответы (1)
Я не нашел решения общей проблемы. Кажется, есть решение:
Есть ли способ разделить блокировку (например, файл блокировки) между процессами R?
и это можно считать дубликатом этого.
person
blueblob
schedule
21.11.2013
append
(по умолчанию, например, дляwrite.table
), несколько файлов могут записываться одновременно (на самом деле это не так, это последовательно, но обычно вы не потеряете записи, которые хотят писать одновременно). , Если у вас есть много-много заданий на многих ядрах, которые завершаются одновременно, вы можете потерять некоторые результаты (я нашел это), поэтому мне нравится записывать в отдельные файлы, а затем объединять. - person Simon O'Hanlon   schedule 11.11.2013save
, но я даже не подумал проверитьhelp(save)
, чтобы увидеть, справился ли он с блокировкой. У него есть параметрsafe=TRUE
, который записывает во временный файл, а затем копирует исходный файл. Это все еще не совсем обеспечивает блокировку. Я добавляю к файлам, поэтому я хотел бы в псевдокодеlock(file);load(file);process();save(file);unlock(file)
- person blueblob   schedule 11.11.2013