
22.05.2009, 17:50
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами:
9427413
Репутация:
973
|
|
Сообщение от presidentua
блин! Не увидел, на новую страницу все перебросило, а я пропустил твой пост. Спасибо! Посмотрю!
По поводу Курла не согласен что это ПХП подход. Курл такая же библиотека как и другие, и если она используется в многих языках - это не делает ее ПХП-шной )
Не совсем так, правильнее наверное будет сказать, что ее реализация есть под многие ЯП..., а вот пользуются ей в основной массе те, кто начал работать с PHP, а потом переходит на другие ЯП и ищут те инструменты, которыми привыкли пользоваться, на нынешней стадии развития питона(я имею ввиду 2,6,2), то единственное чего он не умеет и что поддерживает курл-это работа через соксы
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Моя ИМХА, не претендую на абсолютную правоту
|
|
|

22.05.2009, 16:20
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами:
9427413
Репутация:
973
|
|
PyCurl - выбросить нафик, ибо это:
1. PHP -подход к Python
2. Глючность , если внимательно погуглишь на тему вот этого поста то увидишь что это сишная ошибка, вылазила эта гадость при использовании pyCurl
Socks4/Socks5 - SocksiPy
https через Urllib2 без проблем открывается, никаких шаманств не нужно, правда нету handler для работы с https через прокси - придется что-то выдумывать на эту тему , на activestate есть пример кстати
P.S. Народ подскажите как НОРМАЛЬНО реализовать такую вот цацку:
Код:
def Counter(Count=[0,]):
Count.append(Count[0]+1)
del Count[0]
return Count[0]
она то делает все что мне нужно - запоминает показания счетчика, только мну считает что юзать список ради этого дела некошерно, хотелось бы ФУНКЦИЮ, и чтоб он запоминала именно int
делать переменную не проканает так как я заипусь потом прописывать global Counter везде где мне нужно будет его изменить, а global в функциях есть некошерно
Последний раз редактировалось login999; 22.05.2009 в 16:30..
|
|
|

22.05.2009, 17:48
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
С нами:
9746246
Репутация:
806
|
|
PHP код:
def Counter(Count=[0,]):
Count.append(Count[0]+1)
del Count[0]
return Count[0]
А если так, тоесть глобальная переменная конечно есть, но одна в одном месте ):
PHP код:
a = 0
def add():
global a
a+=1
return a
print add()
print add()
|
|
|

22.05.2009, 17:55
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами:
9427413
Репутация:
973
|
|
Сообщение от presidentua
PHP код:
def Counter(Count=[0,]):
Count.append(Count[0]+1)
del Count[0]
return Count[0]
А если так, тоесть глобальная переменная конечно есть, но одна в одном месте ):
PHP код:
a = 0
def add():
global a
a+=1
return a
print add()
print add()
Незачет - а теперь представь, что у меня 20 функций, которым нужно получение счетчика, причем все это чудо многопоточное и пиздючит ну допустим в 50 потоков... в эту функцию например не нужно даже локов встраивать, так как операция атомарная и при работе с threading проблем быть не должно (по крайней мере так написано), но я считаю некошерным то что для хранения одного-единственного числа приходится создавать список и потом с ним так извращаться
То что я написал является паттерном типа - мну создает заготовки на все случаи жизни 
Использование же global :
1. Некошерно
2. Как пишут возможны проблемы как раз при многопоточности
|
|
|

23.05.2009, 11:24
|
|
Познающий
Регистрация: 11.09.2008
Сообщений: 99
С нами:
9296966
Репутация:
585
|
|
login999
В твоей функции Lock, наверное, все же нужен: например, если поток выполняющий эту функцию исполнит код "Count.append(Count[0]+1)" и, не успев выполнить "del Count[0]", передаст управление другому потоку, который исполнит код этой функции целиком, то результат ее выполнения в первом потоке в итоге будет неверным.
А использовать изменяемый объект в качестве дефолтного значения аргумента функции, на мой взгляд, даже "некошернее", чем использовать global. (:
Как мне кажется, удобней было бы реализовать такой счетчик в виде класса.
Последний раз редактировалось cr0w; 23.05.2009 в 11:34..
|
|
|

23.05.2009, 11:55
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами:
9427413
Репутация:
973
|
|
Сообщение от cr0w
login999
В твоей функции Lock, наверное, все же нужен: например, если поток выполняющий эту функцию исполнит код "Count.append(Count[0]+1)" и, не успев выполнить "del Count[0]", передаст управление другому потоку, который исполнит код этой функции целиком, то результат ее выполнения в первом потоке в итоге будет неверным.
А использовать изменяемый объект в качестве дефолтного значения аргумента функции, на мой взгляд, даже "некошернее", чем использовать global. (:
Как мне кажется, удобней было бы реализовать такой счетчик в виде класса.
Имхо классы это лишнее для таких целей
Мну если честно интересует одно - функция-счетчик
А насчет функции - я тут пораскинул моском - я не уверен насчет того, является ли del атомарной операцией, понял что я в этом не уверен и решил переделать эту функцию так:
Код:
def Counter (Number=[0]):
Number[0] = Number[0]+1
return Number[0]
А насчет того что там используется изменяемый обьект - и что же здесь плохого? Если такое присваивание возможно, то почему бы его не использовать ?
Тупо одна операция присваивания, теперь точно без локов можно
Последний раз редактировалось login999; 23.05.2009 в 11:59..
|
|
|

23.05.2009, 12:54
|
|
Познающий
Регистрация: 11.09.2008
Сообщений: 99
С нами:
9296966
Репутация:
585
|
|
Лок все равно нужен: "Number[0] = Number[0]+1" - не атомрно. А классы, хмм, они очень удобны, даже для таких простых вещей.
Насчет изменяемых объектов: я ж не написал, что не стоит этого использовать, а написал, что это "некошерно". Потому как для кого-то, просматривающего код этой функции, может быть неочевидным то, что список Number будет использоваться один и тот же при каждом вызове функции.
|
|
|

04.06.2009, 03:03
|
|
Постоянный
Регистрация: 18.01.2008
Сообщений: 383
С нами:
9638148
Репутация:
476
|
|
Всем ку! как при помощи py2exe создаать только один ехе файл?
|
|
|

10.06.2009, 09:12
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
С нами:
9427413
Репутация:
973
|
|
Сообщение от Ergoproxy
Всем ку! как при помощи py2exe создаать только один ехе файл?
Даже не интересовался подобным вопросом, потому что насколько я знаю, то при сборке в один екзе через py2exe будут проблемы с путями(насколько я понял то там будет тупо распаковка архива где-то в временную папку, а потом уже запуск оттуд, мне же такое не катит), а мне иногда нужна динамическая подгрузка моих модулей...
|
|
|

10.06.2009, 13:55
|
|
Постоянный
Регистрация: 18.01.2008
Сообщений: 383
С нами:
9638148
Репутация:
476
|
|
Сообщение от login999
Даже не интересовался подобным вопросом, потому что насколько я знаю, то при сборке в один екзе через py2exe будут проблемы с путями(насколько я понял то там будет тупо распаковка архива где-то в временную папку, а потом уже запуск оттуд, мне же такое не катит), а мне иногда нужна динамическая подгрузка моих модулей...
Во во создаётся тупо архив + в нём ехе, но мля вес его просто ппц 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|