|
| Дата |
|
USD/RUB | 88.6852 | BTC/USD | 67794.8860 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
10.02.2013, 21:47
|
Start Post: Помощь и советы по языку Python.
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
|
Всем привет, использую python с 2007 года.
В этом топике я отвечу бесплатно на любой вопрос, если буду знать ответ, конечно.
Есть вопрос по python? Спрашивайте, отвечу. Или, может быть, кто-то ещё ответит.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
11.02.2013, 02:12
|
#22
|
Ебланнед
Регистрация: 08.01.2013
Сообщений: 53
Бабло: $35450
|
про жабу читает лектор 80го лвла
вообще не вижу смысла в лекциях
надо брать хорошую книжку и на примерах хуярить текующую задачу, которую надо решить
потом ещё одну.. и ещё одну..
потом за деньги..
и вот ты уже сам читаешь лекцию
Цитата:
Сообщение от ne0zx
Завтра, возможно, начинаю самый большой проект на Python+php. Будет много данных, частые выборки.. Какое хранилище данных выбрать?
Пробовал mysql, но при том же парсинге многопоточном висел mysql server (has gone away). При семафорах - получалось по скорости практически как в 1 поток.
Может, классы есть какие-то для работы с mysql многопоточной?
Или какой-нибудь sqlite будет быстрее?
|
может тебе при парсинге не пихать каждый чих в UPDATE или INSERT, а сделать LOAD DATA INFILE с пачкой данных сразу, м?
|
|
|
11.02.2013, 02:34
|
#23
|
главный злодей гофака
Регистрация: 18.06.2007
Сообщений: 5,760
Бабло: $953848
|
Цитата:
Сообщение от ne0zx
Завтра, возможно, начинаю самый большой проект на Python+php. Будет много данных, частые выборки.. Какое хранилище данных выбрать?
Пробовал mysql, но при том же парсинге многопоточном висел mysql server (has gone away). При семафорах - получалось по скорости практически как в 1 поток.
Может, классы есть какие-то для работы с mysql многопоточной?
Или какой-нибудь sqlite будет быстрее?
|
mysql не вариант, по скорости инсертов она проигрывает правильно настроенному sqlite. у sqlite слабое место масштабируемость и операции с count(*). можно попробовать postresql. а вообще mongodb уделает по скорости любого из предыдущих, но только на инсертах, на выборках она из коробки равна настроенным RDBMS
__________________
|
|
|
11.02.2013, 02:57
|
#24
|
grablab.org
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,893
Бабло: $322264
|
блин да ладно? а чтобы в лайт хуярить ты что там отключаешь?
у меня чото не получается быстрее писать в лайт чем в скуэль.
|
|
|
11.02.2013, 03:04
|
#25
|
главный злодей гофака
Регистрация: 18.06.2007
Сообщений: 5,760
Бабло: $953848
|
Цитата:
Сообщение от WebNinja
блин да ладно? а чтобы в лайт хуярить ты что там отключаешь?
у меня чото не получается быстрее писать в лайт чем в скуэль.
|
Цитата:
PRAGMA journal_mode = OFF
PRAGMA default_cache_size=32768
PRAGMA cache_size=32768
PRAGMA synchronous = OFF
PRAGMA temp_store = MEMORY
PRAGMA count_changes=OFF //сейчас deprecated
|
еще можно locking_mode = EXCLUSIVE запилить, но тут свои минусы
__________________
|
|
|
11.02.2013, 09:13
|
#26
|
Senior Member
Регистрация: 24.11.2010
Сообщений: 229
Бабло: $52860
|
Цитата:
Сообщение от WebNinja
блин да ладно? а чтобы в лайт хуярить ты что там отключаешь?
у меня чото не получается быстрее писать в лайт чем в скуэль.
|
threadsafe отключаешь и хуяришь в SQLite, а если к данным могут обращаться одновременно несколько пользователей(потоков) то хуяришь в мускул(или ещё куда). По скорости доступа и чтения SQLite делает почти всё, кроме может BDB.
|
|
|
11.02.2013, 11:01
|
#27
|
grablab.org
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,893
Бабло: $322264
|
Цитата:
Сообщение от sspy
еще можно locking_mode = EXCLUSIVE запилить, но тут свои минусы
|
о круто, спасибо. попробую. locking_mode = EXCLUSIVE пойдет по идее если один поток исполнения.
|
|
|
11.02.2013, 11:14
|
#28
|
Member
Регистрация: 31.01.2009
Сообщений: 29
Бабло: $9206
|
lorien , многопоточность как реализовать ? если пиример каконибуть , например открыл файл с урлами и побежал по ним в 100 потоков
Последний раз редактировалось poikl; 11.02.2013 в 11:23.
|
|
|
11.02.2013, 12:01
|
#29
|
Senior Member
Регистрация: 24.11.2010
Сообщений: 229
Бабло: $52860
|
Цитата:
Сообщение от poikl
lorien , многопоточность как реализовать ? если пиример каконибуть , например открыл файл с урлами и побежал по ним в 100 потоков
|
Я не lorien, но можно сделать как-то так.
PHP код:
import Queue, threading
def parse_url(url)
#TODO
pass
def content_parser(q_do):
while True:
try:
(url, lock_do) = q_do.get()
except Exception:
q_do.task_done()
continue
content = parse_url(url)
if content:
with lock_do:
write_content_db(content) #Using with non-threadsafe DB
q_do.task_done()
def thread_example(urls)
q_do = Queue.Queue(1)
lock_do = threading.RLock()
num_of_thread = 0
while urls:
url = urls.pop()
if num_of_thread < 100:
num_of_thread += 1
t = threading.Thread(target=content_parser, args = (q_do,))
t.setDaemon(True)
t.start()
q_do.put((url, lock_do))
q_do.join()
Здесь сто потоков работают с очередью, которая переполняется не более чем на 1 элемент. Используются локер, что бы контролировать доступ к non-threadsafe ресурсу. Обычно можно без локера.
|
|
|
11.02.2013, 12:12
|
#30
|
Senior
Регистрация: 24.09.2008
Сообщений: 2,717
Бабло: $519695
|
В чем основные отличия от php для не кодера при не сложных задачах автоматизации?
т.е. грубо говоря для различной автоматизации мне нужен программист, кого лучше искать - питонщика или пхпшника и в двух словах - почему.
спасибо
|
|
|
11.02.2013, 12:13
|
#31
|
Senior Member
Регистрация: 18.05.2009
Сообщений: 928
Бабло: $196595
ТС -->
|
ТС
> lorien , многопоточность как реализовать ? если пиример каконибуть , например открыл файл с урлами и побежал по ним в 100 потоков
Можно использовать threading или multiprocessing модули для создания 100 тредов (процессов), но это накладно. Лучше в таком случае использовать асинхронное решение, когда процесс один, а сетевые операции выполняются параллельно через 100 неблокируемых сокетов т.е. можно воспользоваться multicurl, конечно, там трудно разобраться, так что лучше взять удобную обёртку Grab::Spider, которую я соверешнно случайно разработал, вот тут все подробности: http://grablib.org - там есть ссылка на документацию на русском, а также ссылки на статьи на хабре, где я расписывал, что такое Grab и Spider.
По поводу баз данных. Я считаю, можно настроить любую базу данных и 99% вопросов "У меня тормозит mysql(postgres, sqlite, mongodb, dbm), поможет ли мне другая БД?" заданы лишь потому что человек не умеет настраивать инструмент с которым он в данный момент работает.
Если мы говорим про базы данных, то давайте конкретезировать что и как тормозит. Объём базы данных, количество таблиц, количество записей в таблицах, средний размер одной записи, характеристики железа, где крутится сервер базы данных, конфиг базы данных, залитый на pastebin, примеры запросов которые тормозят, можно сразу их EXPLAIN
А не так, что"Ой, блять, чё-то всё тормозит, на какую бы другую БД мне свалить".
Можно долго туда сюда прыгать без понимания того, что такое транзакции, индексы и как их можно оптимизировать.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
|
|
|
|