LINUX.ORG.RU

[python] процессы и запись в файл


0

1

Предположим есть n процессов. Каждый из этих процессов пишет в один файл ( стандартный open ). Добавлять в файл не надо нужно чтобы каждый процесс перезаписывал этот файл ( т е там стоит одна строчка записанная последним процессом ). Вопрос следующий: Нужно ли в данном случае лочить данный файл отдельно на время записи ? ( самое главное чтобы не получилось чтобы в файле оказались 2 строчки написанные разными процессами ).

★★☆☆

Зачем тебе это узкое горлышко?

baverman ★★★ ()

В питоне есть GIL, так вот, если у тебя 2 процесса запущенные от одного, то тогда можно не задумываться, а если 2 абсолютно разных, то тут при записи нужно делать лок, а при добавлении не обязательно,

libbkmz ()
Ответ на: комментарий от libbkmz

В питоне есть GIL, так вот, если у тебя 2 процесса запущенные от одного...

Бред. Вы процессы с потоками (нитями) часом не путаете? И даже в случае неск нитей, операция записи в файл неатомарна - это просто академический пример, на котором именно в питоне именно для многонитевого приложения иллюстрируют необходимость блокировки разделяемого ресурса. Посмотрите у Марка Лутца что ли...

AIv ★★★★★ ()
Ответ на: комментарий от const86

Нужно. Вот режим append интересен как раз тем, что можно не лочить.

В смысле, если не интересует результат?;-)

AIv ★★★★★ ()
Ответ на: комментарий от AIv

Нужно. Вот режим append интересен как раз тем, что можно не лочить.

В смысле, если не интересует результат?;-)

Если не интересует, то можно в любом режиме не лочить.

const86 ★★★★★ ()

ЕМНИП, гил гилом, а при операциях, связанных с I/O, гил отпускается, поэтому, даже если речь идет о нескольких потоках, ничто не мешает им писать в файл одновременно. Процессы вообще ничем не ограничены.

Virtuos86 ★★★★★ ()
Ответ на: комментарий от AIv

Там же будет каша при append?

If the O_APPEND flag of the file status flags is set, the file offset shall be set to the end of the file prior to each write and no intervening file modification operation shall occur between changing the file offset and the write operation.

const86 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.