|
| Дата |
|
USD/RUB | 89.7026 | BTC/USD | 68035.2947 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
10.02.2013, 21:47
|
Start Post: Помощь и советы по языку Python.
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
|
Всем привет, использую python с 2007 года.
В этом топике я отвечу бесплатно на любой вопрос, если буду знать ответ, конечно.
Есть вопрос по python? Спрашивайте, отвечу. Или, может быть, кто-то ещё ответит.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
10.02.2013, 23:01
|
#12
|
Senior Member
Регистрация: 20.04.2008
Сообщений: 604
Бабло: $116367
|
Цитата:
Сообщение от sspy
т.е. есть много строковых переменных с которыми происходят манипуляции, в рэндомных случаях выпадает такой exception. как исправить ?
|
Decode всё по отдельности в unicode, сделать конкатенацию, encode всё в нужную кодировку.
|
|
|
10.02.2013, 23:03
|
#13
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
ТС -->
|
ТС
> т.е. есть много строковых переменных с которыми происходят манипуляции, в рэндомных случаях выпадает такой exception. как исправить ?
Понять, что такое UnicodeDecodeError, это когда уникод приводится к строке, а если вы явно не указали кодировку, как, например, в случае u"фыва".encode("utf-8"), то используется кодировка latin-1, которая понимает только символвы с кодами от 1 до 128.
Когда происходит преобразование? Когда вы склеиваете строковые и уникодные данные. Покажу примеры:
>>> "foo" + u"foo"
u'foofoo'
>>> "foo" + u"фуу"
u'foo\u0444\u0443\u0443'
>>> "фуу" + u"бар"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)
Что мы понимаем из примеров? Я лично в последнем случае не очень могу объяснить, почему так работает. Но могу лишь описать, что послужило причиной: когда вы склеили строкоую переменную с русскими символами и уникод с русскими символвами.
Что нужно сделать, чтобы этого избежать? При склейке строк проверять, что вы работаете всегда с одной и той же сущность: или вы склеиваете строки или вы склеиваете уникод.
В вашем случае проверьте, что wrap() и text[x].lower() возврващают уникод
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
10.02.2013, 23:12
|
#14
|
Senior Member
Регистрация: 20.04.2008
Сообщений: 604
Бабло: $116367
|
Допустим есть скрипт который выполняет последовательно большое количество количество sql-запросов. Можно ли выгадать какой-либо профит в скорости исполнения скрипта, используя многопоточность питона?
Просто видел на хабре цитату:
Цитата:
Очевидно, что на нагруженных сервисах и речи быть не может об ужасно дорогих операциях соединения с базой на каждый чих. Вполне можно использовать простейший штатный пул подключений от psycopg2. Сразу берем потокобезопасный ThreadedConnectionPool из которого по мере необходимости выбираем соединения, и после окончания запросов не забываем возвращать обратно.
|
Не пойму каким образом эти пулы могут помочь.
|
|
|
10.02.2013, 23:15
|
#15
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
ТС -->
|
ТС
> Допустим есть скрипт который выполняет последовательно большое количество количество sql-запросов. Можно ли выгадать какой-либо профит в скорости исполнения скрипта, используя многопоточность питона?
Можно выполнять запросы параллельно используя multiprocessing. Можно попробовать ещё threading модуль, но не знаю, будет ли он работать корректно или быстрее.
И надо не забыть настроить БД, чтобы она могла обрабатывать параллельные запросы.
И вообще когда разговор заходит про базу данных в первую очередь надо проверить, что проставлены индексы корректно и бд настроена корректно (выделена память под буферы, по крайней мере)
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
10.02.2013, 23:30
|
#16
|
Senior Member
Регистрация: 24.11.2010
Сообщений: 229
Бабло: $52860
|
Цитата:
Сообщение от kalombo
Допустим есть скрипт который выполняет последовательно большое количество количество sql-запросов. Можно ли выгадать какой-либо профит в скорости исполнения скрипта, используя многопоточность питона?
|
Нет. Последовательно и многопоточно - вещи не совместимые.
|
|
|
10.02.2013, 23:42
|
#17
|
Senior Member
Регистрация: 19.01.2011
Сообщений: 326
Бабло: $48860
|
Цитата:
Сообщение от sspy
т.е. есть много строковых переменных с которыми происходят манипуляции, в рэндомных случаях выпадает такой exception. как исправить ?
|
http://habrahabr.ru/post/135913/
Цитата:
Сообщение от dady
Где есть хороший манаул на руссском по питону.
|
Цитата:
Сообщение от Dexen
python 3.0 > с чего начать изучение? лутз если, то что потом?
|
Дэвид Бизли - Python. Подробный справочник
После этой книги можно с легкостью переходить на офф. доки.
И P.S. кодинг на Eclipse+PyDev намного облегчает вход в тему.
|
|
|
11.02.2013, 00:48
|
#18
|
Black Hat SEO
Регистрация: 19.04.2007
Сообщений: 157
Бабло: $16230
|
Лучше чем Mark Lutz "Learning Python" по сабжу книги не видел.
|
|
|
11.02.2013, 01:22
|
#19
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
ТС -->
|
ТС
Цитата:
Просто видел на хабре цитату:
....
Не пойму каким образом эти пулы могут помочь.
|
Проглядел вопрос про пул. Пул это инструмент который один раз создаёт несколько подключений к базе данных и затем, когда нужно обратитсья к базе данных, то используется одно из созданных подключений. Это делается т.к. подключение к базе данных операция медленная. На высоконагруженном сайте если на каждую загрузку страницы сайта подключаться к базе будет жопа, поэтому и используется пул. Например, пул есть в sqlalchemy. В django orm пула нету. Но, вроде как есть внешние (по-отношению к демону сайту) решения в виде прокси-сервиса, который пропускает через себя запросы к бд через пул соединений.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
11.02.2013, 01:32
|
#20
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
пробовал смотреть 2,5 лекции тут: http://compscicenter.ru/program/course/Python2012 - может послужить отправной точкой в мир питона
лекторша пилит в jetbrains IDE для питона, поэтому она знает этот язык, в целом нормальный сбалансированный курс вроде получился, но я его неасилил.
...еще раз убедился, что выгоднее изучать/пользоваться java-like языками: http://compscicenter.ru/program/course/java2012
там не надо изобретать велосипеды, готовых и проверенных временем фреймворков полно и писать хадуп с нуля не нужно, гы
|
|
|
11.02.2013, 02:11
|
#21
|
Senior Member
Регистрация: 05.08.2009
Сообщений: 423
Бабло: $94751
|
Завтра, возможно, начинаю самый большой проект на Python+php. Будет много данных, частые выборки.. Какое хранилище данных выбрать?
Пробовал mysql, но при том же парсинге многопоточном висел mysql server (has gone away). При семафорах - получалось по скорости практически как в 1 поток.
Может, классы есть какие-то для работы с mysql многопоточной?
Или какой-нибудь sqlite будет быстрее?
__________________
PharmCash - Лучшие условия и профит в фарме. Hold-0, Refunds-0, Commission–50%, CPU+500. Google нас любит!
|
|
|
|