Помощь и советы по языку Python. - Форум успешных вебмастеров - GoFuckBiz.com - Страница 2
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB90.2486
BTC/USD68836.2646
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 10.02.2013, 21:47
Start Post: Помощь и советы по языку Python. 
  #11
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
Exclamation

Всем привет, использую python с 2007 года.
В этом топике я отвечу бесплатно на любой вопрос, если буду знать ответ, конечно.
Есть вопрос по python? Спрашивайте, отвечу. Или, может быть, кто-то ещё ответит.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
lorien вне форума  
Старый 10.02.2013, 23:01   #12
kalombo
Senior Member
 
Регистрация: 20.04.2008
Сообщений: 604
Бабло: $116367
Отправить сообщение для kalombo с помощью ICQ
По умолчанию

Цитата:
Сообщение от sspy Посмотреть сообщение
т.е. есть много строковых переменных с которыми происходят манипуляции, в рэндомных случаях выпадает такой exception. как исправить ?
Decode всё по отдельности в unicode, сделать конкатенацию, encode всё в нужную кодировку.
kalombo вне форума  
Старый 10.02.2013, 23:03   #13
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 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 группы, в которых состоит человек
lorien вне форума  
Старый 10.02.2013, 23:12   #14
kalombo
Senior Member
 
Регистрация: 20.04.2008
Сообщений: 604
Бабло: $116367
Отправить сообщение для kalombo с помощью ICQ
По умолчанию

Допустим есть скрипт который выполняет последовательно большое количество количество sql-запросов. Можно ли выгадать какой-либо профит в скорости исполнения скрипта, используя многопоточность питона?

Просто видел на хабре цитату:
Цитата:
Очевидно, что на нагруженных сервисах и речи быть не может об ужасно дорогих операциях соединения с базой на каждый чих. Вполне можно использовать простейший штатный пул подключений от psycopg2. Сразу берем потокобезопасный ThreadedConnectionPool из которого по мере необходимости выбираем соединения, и после окончания запросов не забываем возвращать обратно.
Не пойму каким образом эти пулы могут помочь.
kalombo вне форума  
Старый 10.02.2013, 23:15   #15
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
ТС -->
автор темы ТС По умолчанию

> Допустим есть скрипт который выполняет последовательно большое количество количество sql-запросов. Можно ли выгадать какой-либо профит в скорости исполнения скрипта, используя многопоточность питона?

Можно выполнять запросы параллельно используя multiprocessing. Можно попробовать ещё threading модуль, но не знаю, будет ли он работать корректно или быстрее.

И надо не забыть настроить БД, чтобы она могла обрабатывать параллельные запросы.

И вообще когда разговор заходит про базу данных в первую очередь надо проверить, что проставлены индексы корректно и бд настроена корректно (выделена память под буферы, по крайней мере)
__________________
TgScan - узнай Telegram группы, в которых состоит человек
lorien вне форума  
Старый 10.02.2013, 23:30   #16
Venya Tolinov
Senior Member
 
Аватар для Venya Tolinov
 
Регистрация: 24.11.2010
Сообщений: 229
Бабло: $52860
Отправить сообщение для Venya Tolinov с помощью Skype™
По умолчанию

Цитата:
Сообщение от kalombo Посмотреть сообщение
Допустим есть скрипт который выполняет последовательно большое количество количество sql-запросов. Можно ли выгадать какой-либо профит в скорости исполнения скрипта, используя многопоточность питона?
Нет. Последовательно и многопоточно - вещи не совместимые.
__________________
Amazon Graffiti - монетизация страниц в Facebook
Venya Tolinov вне форума  
Старый 10.02.2013, 23:42   #17
MetroJazz
Senior Member
 
Аватар для MetroJazz
 
Регистрация: 19.01.2011
Сообщений: 326
Бабло: $48860
По умолчанию

Цитата:
Сообщение от sspy Посмотреть сообщение
т.е. есть много строковых переменных с которыми происходят манипуляции, в рэндомных случаях выпадает такой exception. как исправить ?
http://habrahabr.ru/post/135913/

Цитата:
Сообщение от dady Посмотреть сообщение
Где есть хороший манаул на руссском по питону.
Цитата:
Сообщение от Dexen Посмотреть сообщение
python 3.0 > с чего начать изучение? лутз если, то что потом?
Дэвид Бизли - Python. Подробный справочник

После этой книги можно с легкостью переходить на офф. доки.
И P.S. кодинг на Eclipse+PyDev намного облегчает вход в тему.
MetroJazz вне форума  
Старый 11.02.2013, 00:48   #18
Giber
Black Hat SEO
 
Регистрация: 19.04.2007
Сообщений: 157
Бабло: $16230
По умолчанию

Лучше чем Mark Lutz "Learning Python" по сабжу книги не видел.
Giber вне форума  
Старый 11.02.2013, 01:22   #19
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
ТС -->
автор темы ТС По умолчанию

Цитата:
Просто видел на хабре цитату:
....

Не пойму каким образом эти пулы могут помочь.
Проглядел вопрос про пул. Пул это инструмент который один раз создаёт несколько подключений к базе данных и затем, когда нужно обратитсья к базе данных, то используется одно из созданных подключений. Это делается т.к. подключение к базе данных операция медленная. На высоконагруженном сайте если на каждую загрузку страницы сайта подключаться к базе будет жопа, поэтому и используется пул. Например, пул есть в sqlalchemy. В django orm пула нету. Но, вроде как есть внешние (по-отношению к демону сайту) решения в виде прокси-сервиса, который пропускает через себя запросы к бд через пул соединений.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
lorien вне форума  
Старый 11.02.2013, 01:32   #20
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

пробовал смотреть 2,5 лекции тут: http://compscicenter.ru/program/course/Python2012 - может послужить отправной точкой в мир питона
лекторша пилит в jetbrains IDE для питона, поэтому она знает этот язык, в целом нормальный сбалансированный курс вроде получился, но я его неасилил.
Offtopic
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 11.02.2013, 02:11   #21
ne0zx
Senior Member
 
Аватар для ne0zx
 
Регистрация: 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 нас любит!
ne0zx вне форума