gentoo.ru
python
python@conference.gentoo.ru
Понедельник, 30 августа 2010< ^ >
krigstask установил(а) тему: Python: простой и удобный язык программирования широкого применения
Конфигурация комнаты
Участники комнаты

GMT+4
[00:41:33] maksbotan вышел(а) из комнаты
[09:48:40] maksbotan вошёл(а) в комнату
[13:43:55] maksbotan вышел(а) из комнаты
[13:44:52] maksbotan вошёл(а) в комнату
[17:49:58] maksbotan вышел(а) из комнаты: Replaced by new connection
[17:50:08] maksbotan вошёл(а) в комнату
[17:58:49] krigstask вошёл(а) в комнату
[17:58:59] krigstask вышел(а) из комнаты
[17:59:57] cens вошёл(а) в комнату
[18:00:11] cens вышел(а) из комнаты: Quit
[18:01:03] eegorov вошёл(а) в комнату
[18:01:25] <eegorov> мда, пустовато
[18:01:34] krigstask вошёл(а) в комнату
[18:01:36] eegorov вышел(а) из комнаты
[18:01:44] krigstask вышел(а) из комнаты
[18:56:18] maksbotan вышел(а) из комнаты
[19:30:58] maksbotan вошёл(а) в комнату
[20:33:40] qnikst вошёл(а) в комнату
[20:33:55] <qnikst> у меня чего-то он автоматом не сохраняется
[20:36:03] <maksbotan> в смысле?
[20:36:10] <maksbotan> у тебя ж мкаббер вроде?
[20:37:36] lk4d4 вошёл(а) в комнату
[20:38:06] <qnikst> ну мне лень делать что-либо кроме room join
[20:38:48] <maksbotan> хаха
[20:39:19] <qnikst> добавил
[20:39:25] <maksbotan> qnikst: хорошо в питоне шаришь?
[20:39:26] <qnikst> =)
[20:39:30] <qnikst> нет
[20:39:40] <qnikst> я хорошо только в попытках учить языки шарю :)
[20:39:44] <maksbotan> =)
[20:40:00] <maksbotan> я хотел тебе скриптик подкинуть, чтоб ты помог мне его лучше сделать =)
[20:40:24] <qnikst> покдидывай, есть щанс что смогу
[20:40:29] <maksbotan> http://paste.pocoo.org/show/256297/
[20:40:31] <maksbotan> вот
[20:40:41] <maksbotan> он работает, но это вряд-ли лучшее решение
[20:40:56] <qnikst> мне как раз нужно заняие, чтобы не писать на яве для финов
[20:41:11] <lk4d4> эт правильно, фины не нужны
[20:41:23] <qnikst> нужны они з/п платят
[20:41:24] <qnikst> =)
[20:41:48] <maksbotan> "финны"
[20:42:32] <lk4d4> maksbotan: а почему семафоры юзаешь? я сам-то не шарю, просто интересно в чем их пуля
[20:42:35] <qnikst> у меня было честно 2 по русскому
[20:42:49] <lk4d4> брутально
[20:42:51] <maksbotan> lk4d4: ну смотри
[20:42:59] <qnikst> коунтер больше 1 может быть :)
[20:43:03] <maksbotan> у семафора ограничение добустим 2
[20:43:07] <maksbotan> допустим*
[20:43:20] <maksbotan> я acquire семафор и запускаю поток
[20:43:23] <maksbotan> потом ещё раз
[20:43:30] <lk4d4> нет, я понимаю как работает семафор
[20:43:33] <maksbotan> а на третий раз семафор меня блокирует
[20:43:41] <lk4d4> я скорее не понимаю зачем нужен Lock
[20:43:58] <maksbotan> а когда один поток завершается, семафор отпускается и стартует следующий поток
[20:44:12] <maksbotan> собсно семафор ограничивает число одновременно работающих потоков
[20:44:24] <maksbotan> lk4d4: замок контролирует доступ к списку файлов
[20:44:36] <maksbotan> чтоб два потока одновременно не взяли один и тот же файл
[20:45:41] <lk4d4> а чем обоснована запись всех файлов сразу в список? почему бы через os.walk() их не шурупить и не передавать в worker имена?
[20:46:06] <qnikst> getopts кстати не юзаешь?
[20:46:20] <maksbotan> qnikst: скрипт на один раз, не стал заморачиваться
[20:46:31] <maksbotan> lk4d4: рекурсивность не требовалась
[20:46:43] <lk4d4> ааа
[20:46:44] <maksbotan> и это первое что пришло в голову =)
[20:46:52] <maksbotan> пойду поем, вот
[20:47:00] <lk4d4> но все равно тогда без замка можно обходиться
[20:47:07] <lk4d4> хотя и не уверен, что решение лучше
[20:48:12] <qnikst> кстати в питоне мьюексы есть? =) которые semaphore(1) + бонусы и скорость
[20:49:00] <qnikst> хотя для одноразового скрипта я бы не парился :)
[20:49:04] <lk4d4> в доке написано, что их выпилили в 3 питоне
[20:49:08] <lk4d4> или даже в 2.7
[20:49:18] <qnikst> я бы запустил его и потом думал можно ли что-то улучшать
[20:49:19] <qnikst> ясно
[20:49:27] <lk4d4> я бы вообще через очередь сделал и был бы неправ
[20:49:58] <qnikst> он только файлы из папки тырит?
[20:50:05] <lk4d4> кто он?
[20:50:08] <qnikst> скрипт
[20:50:09] <lk4d4> ботан?
[20:50:13] <qnikst> тырит = обрабатывает
[20:50:20] <lk4d4> ага, обрабатывает скриптом
[20:50:27] <qnikst> или я не осилил строку files = [i for i in os.listdir(os.getcwd()) if i.endswith('.flac')]
[20:50:58] <qnikst> просто имхо лок зло
[20:51:02] <qnikst> ты получил массив
[20:51:07] <lk4d4> у меня тоже на него подозрени
[20:51:08] <lk4d4> е
[20:51:09] <qnikst> потом разделил его на n частей
[20:51:28] <qnikst> и раздал каждому треду номер с которого начинать и сколько (или каким заканчивать)
[20:51:34] <qnikst> и всё они полностью разделены
[20:51:43] <qnikst> и могут работать одновременно
[20:52:06] <lk4d4> не больно просто будет
[20:52:25] <lk4d4> хотя и красиво, что новых потоков не создается
[20:52:29] <lk4d4> и семафор не нужен
[20:52:47] <qnikst> типа создал массив из n эл-тов (где n= кол-во потоков) глобальный и в потоке в цикле for i [arr[k],arr[k+1]]
[20:52:50] <lk4d4> так же и с очередью кстати, потоки ждут элементы в очереди и подрезают их
[20:52:53] <qnikst> где k = номер нити
[20:53:16] <qnikst> очередь круче если скорость обработки файлов разная будет
[20:53:30] <qnikst> т.е. первые 5 долго, а остальные быстро
[20:54:06] <qnikst> вроде не натупил нигде
[20:55:22] <lk4d4> правда я пока не просек, как нитки, которые ждут элементы в очереди убивать
[20:55:32] <lk4d4> в смысле условие какое на break
[20:56:01] <qnikst> ща напишу свой вариант, проверю хоть
[20:56:10] <qnikst> в итоге ботан реализует openMP =)
[20:56:25] <qnikst> кстати оно же для питона есть или аналог?
[20:56:46] <lk4d4> в питоне плохо дело вообще с потоками
[20:57:15] <lk4d4> http://habrahabr.ru/blogs/python/84629/
[20:57:58] <qnikst> а читал
[20:58:27] <qnikst> треда свой номер знает7
[20:58:39] <qnikst> или как-нить в неё можно данные передать нужные? =)
[20:58:45] <lk4d4> идентификаторы у нее есть
[20:58:51] <lk4d4> ну через очередь например)
[20:59:45] <qnikst> а ещё local
[20:59:46] <lk4d4> можно воркеру нужные массивы подсовывать или что ты там хочешь
[21:08:37] <maksbotan> ну нафлудили
[21:08:50] <maksbotan> да, со статичными потоками хорошая идея
[21:10:03] <maksbotan> [20:56:35] <lk4d4> в питоне плохо дело вообще с потоками
[20:57:04] <lk4d4> http://habrahabr.ru/blogs/python/84629/
[21:10:14] <maksbotan> для решения этого можно тупо форкаться
[21:10:30] <maksbotan> но т.к. у меня и так потоки форкаются, я решил на это подзабить
[21:12:03] <lk4d4> maksbotan: а ты на каком питоне пишешь? на 2 или 3?
[21:12:10] <maksbotan> только на 2
[21:12:23] <maksbotan> за 3 как-то страшно браться
[21:12:37] <lk4d4> ну там норм, только модулей маловато
[21:12:51] <lk4d4> не особо торопятся все на 3
[21:13:11] <maksbotan> ага
[21:13:28] <maksbotan> кстати, скрипт был под заказ и заказчик остался доволен его работой
[21:14:53] <lk4d4> да я видал)
[21:15:04] <lk4d4> еще б он денег тебе заплатил)
[21:15:04] <maksbotan> ты да
[21:15:07] <maksbotan> а куникст нет
[21:15:13] <maksbotan> хаха
[21:15:21] <maksbotan> дождешься от него =)
[21:16:04] <qnikst> http://dpaste.com/236340/
[21:16:07] <qnikst> ы?
[21:16:13] <qnikst> что от меня не дождаться?
[21:16:25] <maksbotan> это не про тебя
[21:16:29] <maksbotan> а про фуда
[21:16:34] <maksbotan> он заказчик
[21:17:05] <qnikst> в общем там вариант без локов
[21:17:09] <maksbotan> qnikst: хаха, круто
[21:18:14] <qnikst> дальше уже могут ньюансы идти, где трогать global, а что передавать так
[21:18:20] <qnikst> но на это пофиг :)
[21:19:01] <lk4d4> фор разве не 4 раза сработает?
[21:21:01] <qnikst> 3
[21:21:18] <qnikst> xrange(i,j) от i до j-1
[21:22:47] <lk4d4> а целочисленное деление в данном случае как сработает?
[21:22:56] <lk4d4> просто дробная часть отбросится?
[21:23:34] <maksbotan> смотря какой питон
[21:23:36] <lk4d4> вот тут и нюанс вроде
[21:23:49] <maksbotan> во втором только целая часть
[21:23:53] <maksbotan> в третьем флоат
[21:23:55] <lk4d4> например 50 файлов, 3 потока
[21:24:14] <qnikst> тонкости уже дело ботана :) если он так делат будет
[21:24:19] <lk4d4> :D
[21:24:33] <qnikst> 50/3 = 16
[21:24:35] <maksbotan> не буду я делать
[21:24:40] <lk4d4> 3* 16 = 48
[21:24:41] <maksbotan> мне просто интересно стало ваше мнение
[21:25:02] <qnikst> ну для последнего сделать исключение =)
[21:26:08] <qnikst> for i in xrange(0,t-1): tr(i*d,i*d+d) ; tr(t*d,fn)
[21:26:11] <qnikst> как-то так
[21:26:13] <qnikst> =)
[21:26:34] <qnikst> maksbotan, наше мнение было то, что локи не Ъ =)
[21:26:40] <maksbotan> я понял
[21:26:41] <qnikst> а так имхо всё круто
[21:27:24] <maksbotan> ну тогда спасибо за помощь
[21:28:29] <qnikst> нема за что
[21:28:49] <qnikst> ещё есть вариант сделать очереди :) может потом в хозяйстве пригодится
[21:29:29] <qnikst> а ваще взять и юзать java там в jdk-6 куча подобных умных вещей изкоробки ;)
[21:30:08] <maksbotan> нууу
[21:30:14] <maksbotan> только явы мне тут не хватало
[21:30:47] <qnikst> =))
[21:30:58] <qnikst> это для личкрафтов было? или так
[21:31:48] <lk4d4> личкрафты больше не пилятся
[21:31:56] <lk4d4> это дедфуд музыку перегоняет
[21:33:17] <maksbotan> ага
[21:33:28] <qnikst> хы
[21:33:35] <qnikst> а чо не пилятся
[21:33:49] <qnikst> я что-то пропустил
[21:33:49] <maksbotan> он забил
[21:33:50] <qnikst> ?
[21:35:18] <qnikst> странно..
[21:35:22] <qnikst> но пофиг
[21:35:28] <qnikst> его дело
[22:12:03] qnikst вышел(а) из комнаты
[22:15:18] python@conference.gentoo.ru вошёл(а) в комнату
[22:23:48] lk4d4 вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!