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

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

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

Всем привет, использую python с 2007 года.
В этом топике я отвечу бесплатно на любой вопрос, если буду знать ответ, конечно.
Есть вопрос по python? Спрашивайте, отвечу. Или, может быть, кто-то ещё ответит.
__________________
TgScan - узнай Telegram группы, в которых состоит человек
lorien вне форума  
Старый 11.02.2013, 02:12   #22
ulitka
Ебланнед
 
Регистрация: 08.01.2013
Сообщений: 53
Бабло: $35450
По умолчанию

про жабу читает лектор 80го лвла
вообще не вижу смысла в лекциях
надо брать хорошую книжку и на примерах хуярить текующую задачу, которую надо решить
потом ещё одну.. и ещё одну..
потом за деньги..
и вот ты уже сам читаешь лекцию

Цитата:
Сообщение от ne0zx Посмотреть сообщение
Завтра, возможно, начинаю самый большой проект на Python+php. Будет много данных, частые выборки.. Какое хранилище данных выбрать?
Пробовал mysql, но при том же парсинге многопоточном висел mysql server (has gone away). При семафорах - получалось по скорости практически как в 1 поток.

Может, классы есть какие-то для работы с mysql многопоточной?

Или какой-нибудь sqlite будет быстрее?
может тебе при парсинге не пихать каждый чих в UPDATE или INSERT, а сделать LOAD DATA INFILE с пачкой данных сразу, м?
ulitka вне форума  
Старый 11.02.2013, 02:34   #23
sspy
главный злодей гофака
 
Аватар для sspy
 
Регистрация: 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
__________________
sspy вне форума  
Старый 11.02.2013, 02:57   #24
WebNinja
grablab.org
 
Аватар для WebNinja
 
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,893
Бабло: $322264
Отправить сообщение для WebNinja с помощью ICQ Отправить сообщение для WebNinja с помощью Skype™
По умолчанию

блин да ладно? а чтобы в лайт хуярить ты что там отключаешь?
у меня чото не получается быстрее писать в лайт чем в скуэль.
__________________
www.imscraping.ninja
grablab.org | blog
WebNinja вне форума  
Старый 11.02.2013, 03:04   #25
sspy
главный злодей гофака
 
Аватар для sspy
 
Регистрация: 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 запилить, но тут свои минусы
__________________
sspy вне форума  
Старый 11.02.2013, 09:13   #26
Venya Tolinov
Senior Member
 
Аватар для Venya Tolinov
 
Регистрация: 24.11.2010
Сообщений: 229
Бабло: $52860
Отправить сообщение для Venya Tolinov с помощью Skype™
По умолчанию

Цитата:
Сообщение от WebNinja Посмотреть сообщение
блин да ладно? а чтобы в лайт хуярить ты что там отключаешь?
у меня чото не получается быстрее писать в лайт чем в скуэль.
threadsafe отключаешь и хуяришь в SQLite, а если к данным могут обращаться одновременно несколько пользователей(потоков) то хуяришь в мускул(или ещё куда). По скорости доступа и чтения SQLite делает почти всё, кроме может BDB.
__________________
Amazon Graffiti - монетизация страниц в Facebook
Venya Tolinov вне форума  
Старый 11.02.2013, 11:01   #27
WebNinja
grablab.org
 
Аватар для WebNinja
 
Регистрация: 18.09.2007
Адрес: Thailand
Сообщений: 4,893
Бабло: $322264
Отправить сообщение для WebNinja с помощью ICQ Отправить сообщение для WebNinja с помощью Skype™
По умолчанию

Цитата:
Сообщение от sspy Посмотреть сообщение
еще можно locking_mode = EXCLUSIVE запилить, но тут свои минусы
о круто, спасибо. попробую. locking_mode = EXCLUSIVE пойдет по идее если один поток исполнения.
__________________
www.imscraping.ninja
grablab.org | blog
WebNinja вне форума  
Старый 11.02.2013, 11:14   #28
poikl
Member
 
Регистрация: 31.01.2009
Сообщений: 29
Бабло: $9206
По умолчанию

lorien , многопоточность как реализовать ? если пиример каконибуть , например открыл файл с урлами и побежал по ним в 100 потоков

Последний раз редактировалось poikl; 11.02.2013 в 11:23.
poikl вне форума  
Старый 11.02.2013, 12:01   #29
Venya Tolinov
Senior Member
 
Аватар для Venya Tolinov
 
Регистрация: 24.11.2010
Сообщений: 229
Бабло: $52860
Отправить сообщение для Venya Tolinov с помощью Skype™
По умолчанию

Цитата:
Сообщение от poikl Посмотреть сообщение
lorien , многопоточность как реализовать ? если пиример каконибуть , например открыл файл с урлами и побежал по ним в 100 потоков
Я не lorien, но можно сделать как-то так.

PHP код:
import Queuethreading

def parse_url
(url)
#TODO
    
pass

def content_parser
(q_do):
    while 
True:
        try:
            (
urllock_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_parserargs = (q_do,))
            
t.setDaemon(True)
            
t.start()
        
q_do.put((urllock_do))
    
q_do.join() 
Здесь сто потоков работают с очередью, которая переполняется не более чем на 1 элемент. Используются локер, что бы контролировать доступ к non-threadsafe ресурсу. Обычно можно без локера.
__________________
Amazon Graffiti - монетизация страниц в Facebook
Venya Tolinov вне форума  
Старый 11.02.2013, 12:12   #30
iloveadult
Senior
 
Аватар для iloveadult
 
Регистрация: 24.09.2008
Сообщений: 2,717
Бабло: $519695
По умолчанию

В чем основные отличия от php для не кодера при не сложных задачах автоматизации?
т.е. грубо говоря для различной автоматизации мне нужен программист, кого лучше искать - питонщика или пхпшника и в двух словах - почему.
спасибо
__________________
Top Links - качественные ссылки для Ваших сайтов
[UA] Моментальный вывод WM и других валют с лучшим курсом 24/7!
iloveadult вне форума  
Старый 11.02.2013, 12:13   #31
lorien
Senior Member
 
Аватар для lorien
 
Регистрация: 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 группы, в которых состоит человек
lorien вне форума