Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python: Много поточные обновления

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, у меня появились вопросы по реализации потоков.
Есть задача, открыть N число потоков, где в каждом из них, будет получаться записи с БД LIMIT T, K
где
T=1, K=100 при N = 1,
K=101, T=200 при N = 2 и так до того, пока не закончатся записи с БД.
 
думаю сделать вручную, т.е.
 

Код:
thread.start_new_thread(loading,(1, 100))
thread.start_new_thread(loading,(101, 200))

и т.д.
 
но тут вопрос, если использовать глобальную, общею переменную buffer, она будет для всех thread с одинаковым значением?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 12:59 16-06-2015 | Исправлено: Sutar, 22:21 16-06-2015
doxtur

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
глобальная будет одна
 
ЗЫ на каком курсе нынче такие задачи?

Всего записей: 88 | Зарегистр. 21-12-2005 | Отправлено: 03:21 17-06-2015
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
doxtur
да на курсах я учил C++
это я учу для саморазвития. Да и разные коды осуществляю.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 09:38 17-06-2015
doxtur

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
понятно - пример конечно не очень практичный ) распараллеливать SELECT вещь достаточно бессмысленная

Всего записей: 88 | Зарегистр. 21-12-2005 | Отправлено: 02:47 29-06-2015
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
doxtur
такой, коротки вопрос.
Вот кусок:
 

Код:
db = MySQLdb.connect('127.0.0.1','user','pass','db')
c = db.cursor()
c.execute("INSERT INTO `tbase` (ip) VALUES (%s)", (ip))
db.commit()
c.close()

 
Тут правильно всё выполняется?
просто такой вопрос, почему нельзя дописать db.close()?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:51 06-07-2015
doxtur

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
 
написать конечно можно, просто если дальше будут еще обращения к БД - нужно опять открывать коннекшн, это может быть нецелесообразно. Открывать-закрывать коннекшн - достаточно "дорогая" операция, в общем зависит от контекста - что ваша программа в целом делает, по кусочку - непонятно.

Всего записей: 88 | Зарегистр. 21-12-2005 | Отправлено: 06:52 07-07-2015
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
doxtur

Код:
def mysql_logscs(ip):
    attempts = 0
    while attempts == 0:
        try:
            db = MySQLdb.connect('127.0.0.1','user','pass','db')
            c = db.cursor()
            c.execute("INSERT INTO `tbase` (ip) VALUES (%s)", (ip))
            db.commit()
            c.close()
            attempts = 1
        except MySQLdb.Error, e:
            print "MySQL: %s" %e
            time.sleep(5)
    thread.exit()

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 09:35 07-07-2015
doxtur

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну добавь db.close() если хочешь )

Всего записей: 88 | Зарегистр. 21-12-2005 | Отправлено: 06:29 13-07-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python: Много поточные обновления


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru