Re[4]: [Python] Best practices
От: FR  
Дата: 08.05.09 09:02
Оценка: 8 (2) +2 :)
Здравствуйте, kochetkov.vladimir, Вы писали:

CVL>>Например как посчитать количество строк в файле?


KV>С т.з. красоты кода и производительности, можно запитонить что-нибудь типа этого:


....

KV>С т.з. затрат памяти, лучше:


с обоих т. з. лучше так :

print sum( (1 for x in open("test.txt")) )
Re[2]: [Python] Best practices
От: SHorrty Россия  
Дата: 08.05.09 03:47
Оценка: 29 (4)
Здравствуйте, SHorrty, Вы писали:

SH>Здравствуйте, CiViLiS, Вы писали:


CVL>>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

CVL>>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.

SH>Много рецептов есть в этой книге: Python Cookbook.


В догонку:
* Python best practices
* PLEAC-Python (PLEAC: Programming Language Examples Alike Cookbook)
Re[3]: [Python] Best practices
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 07.05.09 07:43
Оценка: 5 (2)
Здравствуйте, CiViLiS, Вы писали:

CVL>Например как посчитать количество строк в файле?


С т.з. красоты кода и производительности, можно запитонить что-нибудь типа этого:

print "%d строк" % len(open("C:/textfile.txt").readlines())


С т.з. затрат памяти, лучше:

f = open("C:/textfile.txt")
n = 0
for line in f.xreadlines():
    n+=1
f.close()
print "%d строк" % n



[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: [Python] Best practices
От: antiPooH  
Дата: 07.05.09 08:32
Оценка: 5 (2)
Здравствуйте, CiViLiS, Вы писали:

CVL>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

http://code.activestate.com/recipes/langs/python/
CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.
http://pypi.python.org/

python.ru уже сто лет не обновлялся, похоже брошенный, смотрите лучше http://python.su/ там и форум активный
Re[5]: [Python] Best practices
От: CiViLiS Россия  
Дата: 11.05.09 12:39
Оценка: 3 (2)
Здравствуйте, FR, Вы писали:

FR>с обоих т. з. лучше так :

FR>
FR>print sum( (1 for x in open("test.txt")) )
FR>


Не знаю как с точки зрения памяти, но вот с точки зрения производительности этот способ сливает в семь раз всем остальным:

методвремякраткое описание метода
xline0.703for l in input
xline20.718for l in input.xreadlines()
xline2a1.001for l in input.readlines()
xline36.680sum(1 for x in input)
xline40.797len(input.xreadlines())
xline4a0.860len(input.readlines())
Версия питона 2.6.1, запускал под виндой, компилял с и без оцией -O (от нее результаты практически не зависят):

import profile

def xline(filename, showResult):
    input = open(filename, 'r')
    count = 0
    for l in input:
        count += 1
    if showResult:
        print count

def xline2(filename, showResult):
    input = open(filename, 'r')
    count = 0
    for l in input.xreadlines():
        count = count + 1
    if showResult:
        print count

def xline2a(filename, showResult):
    input = open(filename, 'r')
    count = 0
    for l in input.readlines():
        count = count + 1
    if showResult:
        print count

def xline3(filename, showResult):
    input = open(filename, 'r')
    count = sum(1 for x in input)
    if showResult:
        print count

def xline4(filename, showResult):
    input = open(filename, 'r')
    count = len(input.readlines())
    if showResult:
        print count

def xline4a(filename, showResult):
    input = open(filename, 'r')
    count = len(input.readlines())
    if showResult:
        print count



filename = '3.log'
xline(filename, True)
showResult = False;
profile.run('xline(filename, showResult)')
profile.run('xline2(filename, showResult)')
profile.run('xline2a(filename, showResult)')
profile.run('xline3(filename, showResult)')
profile.run('xline4(filename, showResult)')
profile.run('xline4a(filename, showResult)')



Возможно такой слив из-за вот этого "539498 function calls in 6.680 CPU seconds". У все остальных пишет 5-7 вызовов.
Запускал тесты не один раз, результаты каждый раз чуть другие но тенденция сохраняется.
... << RSDN@Home 1.2.0 alpha 4 rev. 1214>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[6]: [Python] Best practices
От: FR  
Дата: 11.05.09 13:15
Оценка: 6 (1)
Здравствуйте, CiViLiS, Вы писали:

CVL>Здравствуйте, FR, Вы писали:


FR>>с обоих т. з. лучше так :

FR>>
FR>>print sum( (1 for x in open("test.txt")) )
FR>>


CVL>Не знаю как с точки зрения памяти, но вот с точки зрения производительности этот способ сливает в семь раз всем остальным:


Померяй не профайлером а напрямую (хоть clock() из time) будут чудные открытия
Можешь также поменять profile на cProfile но это от "эффекта наблюдателя" сильно не избавит.
Re[3]: [Python] Best practices
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 07.05.09 06:39
Оценка: -1
Здравствуйте, CiViLiS, Вы писали:

CVL>Например как посчитать количество строк в файле? Могу предложить два варианта: открыть файл в памяти и сделать поиск по "\n\r", или сделать типа

CVL>
CVL>n = 0;
CVL>for line in f:
CVL>    n++
CVL>


CVL>Какой из них более эффективный, с учетом того что понадобится второй проход? Файлы примерно по 10 метров. Или в контексте питона вопрос об эффективности не принято задавать?


Ответ будет тот же что и для perl, C++ и др. ЯП
[Python] Best practices
От: CiViLiS Россия  
Дата: 06.05.09 19:01
Оценка:
Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.
И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.
... << RSDN@Home 1.2.0 alpha 4 rev. 1102>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re: [Python] Best practices
От: neFormal Россия  
Дата: 06.05.09 19:02
Оценка:
Здравствуйте, CiViLiS, Вы писали:

CVL>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.

баян
http://www.rsdn.ru/forum/message/3210660.1.aspx
Автор: ryf
Дата: 11.12.08
...coding for chaos...
Re: [Python] Best practices
От: Константин Россия  
Дата: 06.05.09 21:14
Оценка:
Здравствуйте, CiViLiS, Вы писали:

CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.


Стандартная библиотека python
Re[2]: [Python] Best practices
От: CiViLiS Россия  
Дата: 07.05.09 04:45
Оценка:
Здравствуйте, neFormal, Вы писали:

F>баян

F>http://www.rsdn.ru/forum/message/3210660.1.aspx
Автор: ryf
Дата: 11.12.08

вопрос может и боянный, но только ответа я там не нашел. Получается кроме двух книг ("Язык программирования Python" и "Dive Into Python") и нету ничего? Ок, будем изучать статьи с Python.ru и задавать тупые вопросы тут
Например как посчитать количество строк в файле? Могу предложить два варианта: открыть файл в памяти и сделать поиск по "\n\r", или сделать типа
n = 0;
for line in f:
    n++


Какой из них более эффективный, с учетом того что понадобится второй проход? Файлы примерно по 10 метров. Или в контексте питона вопрос об эффективности не принято задавать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1102>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re: [Python] Best practices
От: Аноним  
Дата: 07.05.09 07:17
Оценка:
Здравствуйте, CiViLiS, Вы писали:

CVL>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.

из первых рук. Плюс есть еще блог князя гвидона, ссылку не знаю
Re[4]: [Python] Best practices
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 07.05.09 07:57
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

CVL>>Например как посчитать количество строк в файле?


В чем согласены с моим отчетом?
Re[3]: [Python] Best practices
От: neFormal Россия  
Дата: 07.05.09 08:14
Оценка:
Здравствуйте, CiViLiS, Вы писали:

F>>баян

F>>http://www.rsdn.ru/forum/message/3210660.1.aspx
Автор: ryf
Дата: 11.12.08

CVL>вопрос может и боянный, но только ответа я там не нашел. Получается кроме двух книг ("Язык программирования Python" и "Dive Into Python") и нету ничего?

есть, конечно.. но либо старое, либо на английском
вот например, любопытная книга: http://rapidshare.com/files/75872398/Addison_Wesley_Text_Processing_In_Python.zip
на русском книг почти нет..
а "лучшие практики" можно поискать в блогах.. люди часто пишут по поводу разных решений при использовании питона..

CVL>Ок, будем изучать статьи с Python.ru и задавать тупые вопросы тут


правильно.. на самом деле это всё заговор.. чтоб форум "Динамические языки" не загнулся без вопросов..
...coding for chaos...
Re[2]: [Python] Best practices
От: slava_phirsov Россия  
Дата: 07.05.09 08:46
Оценка:
Здравствуйте, antiPooH, Вы писали:

PH>python.ru уже сто лет не обновлялся, похоже брошенный, смотрите лучше http://python.su/ там и форум активный


Я на python.ru с пару месяцев назад заходил, так опера тут же выдала, что мне пытаются установить какое-то приложение. Проверять что к чему я не стал, просто ответил Cancel и больше туда не суюсь. Рулит
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
Re[3]: [Python] Best practices
От: antiPooH  
Дата: 07.05.09 09:26
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

_>Рулит

python.org несомненно рулит но на python.su русскоязычное сообщество
Re[5]: [Python] Best practices
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 07.05.09 10:32
Оценка:
Здравствуйте, achmed, Вы писали:

A>Здравствуйте, kochetkov.vladimir, Вы писали:


CVL>>>Например как посчитать количество строк в файле?


A>В чем согласены с моим отчетом?


Ну, скажем так, я не согласен со столь мутной формулировкой из которой непонятно, какой именно ответ (единый для всех ЯП) имелся ввиду

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: [Python] Best practices
От: SHorrty Россия  
Дата: 07.05.09 13:02
Оценка:
Здравствуйте, CiViLiS, Вы писали:

CVL>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.

CVL>И есть ли для питона что-то типа буста/cpan, то есть набор библиотек, дабы не заниматься производством велосипедов в промышленных масштабах.

Много рецептов есть в этой книге: Python Cookbook.
Re[4]: [Python] Best practices
От: CiViLiS Россия  
Дата: 07.05.09 17:59
Оценка:
Здравствуйте, neFormal, Вы писали:

F>есть, конечно.. но либо старое, либо на английском

Я не привиредлив

F>вот например, любопытная книга: http://rapidshare.com/files/75872398/Addison_Wesley_Text_Processing_In_Python.zip

спасибо почитаю.

F>а "лучшие практики" можно поискать в блогах.. люди часто пишут по поводу разных решений при использовании питона..

К сожалению, в данный момент нету времени на поиски по различным блогам, да и знаний/критериев для поиска. Хотелось бы найти место, где это уже до меня кто нить собрал

F>правильно.. на самом деле это всё заговор.. чтоб форум "Динамические языки" не загнулся без вопросов..

ок
... << RSDN@Home 1.2.0 alpha 4 rev. 1208>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[6]: [Python] Best practices
От: CiViLiS Россия  
Дата: 11.05.09 12:50
Оценка:
Здравствуйте, CiViLiS, Вы писали:

поправка в коде:
CVL>
CVL>def xline4(filename, showResult):
CVL>    input = open(filename, 'r')
CVL>    count = len(input.readlines()) # должно было быть xreadlines, но это естественно не возможно
CVL>    if showResult:
CVL>        print count
CVL>
... << RSDN@Home 1.2.0 alpha 4 rev. 1214>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[7]: [Python] Best practices
От: CiViLiS Россия  
Дата: 11.05.09 14:29
Оценка:
Здравствуйте, FR, Вы писали:

FR>Померяй не профайлером а напрямую (хоть clock() из time) будут чудные открытия

Спасибо.. действительно.. Не ожидал. Табличка чуть поменялась:
методвремякраткое описание метода
xline0.749for l in input
xline20.735for l in input.xreadlines()
xline2a0.953for l in input.readlines()
xline30.766sum(1 for x in input)
xline4a0.828len(input.readlines())
Получается время работы всех процедур укладывается в "погрешность" измерений, вот только методы основанные на readlines имеют чуть большее время работы.

FR>Можешь также поменять profile на cProfile но это от "эффекта наблюдателя" сильно не избавит.

пасиб. Про cprofile вроде инфу нашел -- потом почитаю.
... << RSDN@Home 1.2.0 alpha 4 rev. 1214>>
"Бог не терпит голой сингулярности" -- Роджер Пенроуз
Re[3]: [Python] Best practices
От: Stoune  
Дата: 17.05.09 11:58
Оценка:
Здравствуйте, SHorrty, Вы писали:

CVL>>>Поделитесь плиз ссылкой на best practices для питона, что-то типа Мейерса для с++.


SH>>Много рецептов есть в этой книге: Python Cookbook.


SH>В догонку:

SH> * Python best practices
SH> * PLEAC-Python (PLEAC: Programming Language Examples Alike Cookbook)

И в догонку:

Style Guide for Python Code
Python Is Not Java
Python-Cookbook — это компиляция лучших советов с ActiveState ASPN, учитывая что книга выходит реже, часто на сайте более свежие советы.
... << RSDN@Home 1.2.0 alpha 4 rev. 1207>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.