Всем привет.
Как проще всего решить проблему? Есть 10 threads, которые после окончания своей работы, записывают пару строк в файл. По причине того, что выполняются они параллельно, процесс записи в файл превращается в мясорубку.
Первое, что приходит на ум - каждый thread записывает все в свой файл, а потом все файлы просто сливаются в один. Может есть более простой способ?
Заранее благодарен за советы.
python2.6, threads и запись в файл (соблюдаем очередь)
Модератор: Модераторы разделов
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
python2.6, threads и запись в файл
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Re: python2.6, threads и запись в файл
Если операции записи не особо активные (например, по окончании работы), то так проще, наверное:
1. lock
2. write to file
3. flush
4. unlock
Если частые записи, то, имхо, лучше завести отдельный поток записи в файл, которому просто посылать сообщение, которое нужно записать.
1. lock
2. write to file
3. flush
4. unlock
Если частые записи, то, имхо, лучше завести отдельный поток записи в файл, которому просто посылать сообщение, которое нужно записать.
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: python2.6, threads и запись в файл
Возможно есть решение от самих python-разработчиков? Подобная ситуация с threading встречается постоянно.
Это первое о чем я подумал, но на python'е я этого еще не реализовывал. За пример кода был бы очень признателен (:
Т.е. все потоки передают свои строки обратно, и уже там (после обработки), записываются в файл? Безусловно это экономит I/O (в моем случае это критично), но тогда нужно запрограммировать обработчик этих записей.
Это первое о чем я подумал, но на python'е я этого еще не реализовывал. За пример кода был бы очень признателен (:
Т.е. все потоки передают свои строки обратно, и уже там (после обработки), записываются в файл? Безусловно это экономит I/O (в моем случае это критично), но тогда нужно запрограммировать обработчик этих записей.
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Re: python2.6, threads и запись в файл
К сожалению, python не знаю. Так, правил несколько скриптов по образу и подобию. Поэтому не подскажу о наличии готовых решений. Я такое (с отдельным потоком для записи) делал, но это было C++/boost, так что не особо поможет, наверное.
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: python2.6, threads и запись в файл
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |