Форум сайта python.su
0
Подскажите, можно ли ограничиться только очередями для сохранения данных в один файл разными процессами? Либо нужно использовать менеджер процессов? Вроде как обмен данными не требуется, но файл для сохранения результата один.
Если можно пример. Спасибо.
Отредактировано kotey (Май 26, 2014 18:06:33)
Офлайн
253
Можно ограничиться файлом без всяких менеджеров и очередей (вы не наложили никаких требований на то как оно пишется).
Отредактировано doza_and (Май 26, 2014 20:33:36)
Офлайн
0
doza_andа что насчет коллизий? когда один процесс попытается сохранить файл открытый другим процессом?
Можно ограничиться файлом без всяких менеджеров и очередей (вы не наложили никаких требований на то как оно пишется).
Офлайн
75
kotey
он может открыть его? О_о
Напиши код для теста ибо мне тоже интересно.
Офлайн
8
kotey
Держите пример Python: write to single file from multiple processes (ZMQ). Правда, как следует из названия, это не совсем то, что Вам нужно, поскольку там zmq используется. Но ПМСМ в данном случае это наиболее простой и идеальный по быстродействию вариант.
Офлайн
0
Singularity
koteyон может открыть его? О_о Напиши код для теста ибо мне тоже интересно.
def pars(arg): try: res = parse(arg) except: sys.exit() with open('res.txt','a') as s: s.write(res.encode('utf-8') + '\n') pool = Pool(processes=4) try: result = pool.map_async(pars, lines) result.get(timeout=20) except: sys.exit()
Отредактировано kotey (Май 27, 2014 17:19:39)
Офлайн