Zverushko
Ноя. 11, 2013 08:12:23
Доброго дня!
Есть задача сохранять разом большое количество урлов (50).
Если использовать urllib.request.urlopen в цикле, то 50 сайтов сохраняются в массив примерно за 25-30 секунд. Если использовать multiprocessing, то за 4 секунды.
Но, джанго с мультипроцессингом не дружит, баг достаточно давно существует, решается манкипатчингом. но это костыль и я его использовать не хочу.
Есть ли какой то еще вариант в котором можно быстро это делать?
Заранее спасибо!
plusplus
Ноя. 11, 2013 08:54:15
Использовать multithreading, запустить сохранение урлов в отдельном потоке, например.
Zverushko
Ноя. 11, 2013 09:26:18
multiprocessing? он не дружит с джанго, появляется ошибка
Exception AttributeError: AttributeError("'_DummyThread' object has no attribute '_block'",) in <module 'threading' from '/usr/lib/python3.2/threading.py'> ignored
Exception AttributeError: AttributeError("'_DummyThread' object has no attribute '_block'",) in <module 'threading' from '/usr/lib/python3.2/threading.py'> ignored
lorien
Ноя. 11, 2013 09:55:52
Можно использовать threading а не multiprocessing
Zverushko
Ноя. 11, 2013 12:31:14
plusplus
http://docs.python.org/2/library/threading.html
http://docs.python.org/dev/library/concurrent.futures.html#threadpoolexecutor
Спасибо! переписал функцию, все оч просто и понятно, вечером попробую как будет дружить с джанго
Но, сейчас используется threading для потоков, вроде все ровно, так что poolThreading должен нормально работать в теории
o7412369815963
Ноя. 11, 2013 22:01:05
Зачем оно в джанго проекте? Может сделать отдельным скриптом который стартовать через subprocess? Что хотите сделать?