Что произойдет, если в случае одновременного доступа для чтения / записи? - PullRequest
0 голосов
/ 10 января 2019

В учебнике zarr написано:

Массивы Zarr не были предназначены для ситуаций, когда несколько читателей и писателей одновременно работают с одним и тем же массивом.

Что бы произошло, если бы это случилось? Это потерпит крах? Неопределенное поведение? Это будет медленно или неэффективно?

EDIT: Поддерживается несколько писателей и читателей:

Под источником данных мы подразумеваем, что может произойти несколько одновременных операций чтения. Под приемником данных мы подразумеваем, что могут происходить несколько одновременных операций записи, при этом каждый модуль записи обновляет свою область массива

Пример:

synchronizer = zarr.ProcessSynchronizer('data/example.sync') z = zarr.open_array(..., synchronizer=synchronizer)

1 Ответ

0 голосов
/ 10 января 2019

Исходя из собственных документов, по умолчанию поведение не синхронизируется.

Итак, это не будет медленным / неэффективным - это произошло бы, если бы у вас была синхронизация, и работникам приходилось ждать, пока другие работники освободят ресурсы, прежде чем продолжить.

Это также не приведет к сбою, по крайней мере, без вмешательства третьей стороны - ничто не ограничивает доступ, и я предполагаю, что нет никаких проверок во время выполнения для такой ситуации, которая может вызвать ошибку по проекту.

Не определено? Не совсем, но мы все ближе. Предполагая, что действительно нет никаких проверок или блокировок по умолчанию, вы получите условие гонки, то есть, если ваш Writer сначала получит ваши данные, Reader, пытающийся прочитать их в следующую секунду, просто увидит все, что написал Writer.

Если вместо этого ваш Reader сначала запускает свой маленький грязный ввод-вывод, он будет читать исходные данные, прежде чем перезаписать Writer. И если у вас есть два Writer, то, что произойдет позже, определит, какова окончательная форма данных.

То же самое относится к> 2 Читателям / Писателям; Я оставлю выяснение специфики возникшего беспорядка в качестве упражнения для вас.

...