python (питон)

Описание: Программирование на супер модном мега крутом языке Питон.

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 5 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#13 dyvniy » Сб, 8 ноября 2014, 10:36:48

Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 5 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#14 dyvniy » Вт, 9 декабря 2014, 12:29:50

И снова потоки
http://www.cyberforum.ru/blogs/214240/blog784.html
Спойлер
Python. Параллельные потоки. Часть 1.
Запись от Фаер размещена 30.09.2012 в 15:34
Обновил(-а) Фаер 08.09.2013 в 10:32
Метки python, потоки, _thread
Параллельные потоки - вещь полезная и даже интересная, но почувствовать всю их мощь можно, только работая с большими программами и граф. интерфейсами. Большие программы Мы рассматривать не будем, чтобы не забивать голову сторонними предметами, а поэкспериментируем с мелочью. Но сначала немного теории.

GIL(Global Interpreter Lock) - глобальная блокировка интерпретатора. Это понятие не слишком важно для тех, кто не хочет лезть в самую суть параллельных потоков, но кратко ознакомиться с ним всё-же не помешает. На самом деле, большая часть задач, выполняемых компьютером одновременно, не так уж и одновременна. В частности, из-за GIL Мы попадаем в такую ситуацию: в конкретный момент времени интерпретатор выполняет лишь один поток. Параллельность достигается за счёт быстрой смены выполняемых потоков, настолько быстрой (обычно каждые 0.05 сек.), что возникает ощущение одновременности выполнения операций. Таким образом, блокировка не позволяет использовать преимущества многопроцессорных систем, но это недоразумение можно обойти с помощью параллельных процессов, которые Мы разберём через урок.

Модуль _thread
Данный модуль позволяет запускать параллельный поток с помощью функции start_new_thread(). Поток, в Нашем случае, так же представляет собой функцию.

Код Python

Код: Выделить всё

import _thread
from time import sleep
def hel():  #описываем функцию, которую собираемся запустить параллельно основному потоку
    sleep(2)
    print('Hello,world!')
_thread.start_new_thread(hel,()) #запускаем функцию в качестве параллельного потока
sleep(5)
print('Done')
input()

Вот такой скрипт. Если запустить его, то через две секунды после старта Вы получите надпись Hello,world! и ещё через три(а не через 5, как было бы при вызове функции в этом же потоке) надпись Done.

Обратите внимание, функции start_new_thread() мы передаём два аргумента: непосредственно функцию, которую Мы хотим запустить в параллельном потоке, и кортеж аргументов, которые эта функция принимает. В Нашем случае, передавать какие-либо данные в функцию hel() не нужно.

После вызова start_new_thread() интерпретатор "параллельно" выполняет два потока:
1-ый продолжает выполнять команды, стоящие после start_new_thread()(основной поток).
2-ой выполняет команды, находящиеся в функции hel()(дочерний поток).

Время от времени Нам может требоваться подождать завершения одного из потоков. Как раз для таких случаев в модуле _thread имеются блокировки.

Код Python

Код: Выделить всё

import _thread
from time import sleep
l=_thread.allocate_lock()#создаём блокировку
def hel():
    sleep(2)
    print('Hello,world!')
    l.acquire()#"замыкаем" блокировку в знак окончания выполнения потока
_thread.start_new_thread(hel,())
while not l.locked():
    pass
sleep(2)
print('Done')
input()

При выполнении этого скрипта происходит следующее:

1. Запускается параллельный поток. Основной поток ждёт пока блокировка l не будет "замкнута"(l.locked()).
2. После окончания выполнения функции hel(), Мы "замыкаем" блокировку с помощью метода acquire().
3. Основной поток получает информацию о том, что параллельный поток был остановлен(l.locked()) и продолжает выполнять команды.

Но это ещё не всё. Выполнение потока можно приостановить, а потом продолжить. Для этого Нам понадобится та же самая блокировка.

Код Python

Код: Выделить всё

import _thread
from time import sleep
l=_thread.allocate_lock()
def fun():
    while True:
        if not l.locked():
            print('Hello!')
            sleep(1)
def by():
    while True:     
        print('Bye')
        sleep(1)
_thread.start_new_thread(fun,())
sleep(0.5)
_thread.start_new_thread(by,())
sleep(3)
l.acquire()
sleep(3.5)
l.release()
input()
Данный скрипт печатает две надписи поочереди. Через три секунды после запуска он блокирует(l.acquire()) один из потоков(fun()) и продолжает писать только одно слово. Ещё через три секунды выполнение заблокированного потока возобновляется(l.release()) и в консоли снова поочереди появляюся две надписи.

Кроме всего этого, поток можно завершить, передав соответствующую команду в нём же. Грубо говоря, поток завершит сам себя:
Код Python

Код: Выделить всё

import _thread
from time import sleep
def hel():
    sleep(2)
    _thread.exit()
    print('Hello,world!')
_thread.start_new_thread(hel,())
sleep(5)
print('Done')
input()
В данном скрипте функция _thread.exit() завершает поток, в котором выполняется. Таким образом, надпись Hello,world! Вы не увидите, так как поток был прерван до того, как дело дошло до print('Hello,world!').
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 5 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#15 dyvniy » Ср, 14 января 2015, 17:57:59

Выгрузка файла на сервер

Библиотека requests

>>> import requests
>>> url = 'http://codevar.ru/post'
>>> files = {'report.xls': open('C:\\report.xls', 'rb')}

>>> r = requests.post(url, files=files)
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 5 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#16 dyvniy » Пт, 30 января 2015, 12:04:27

Map sort
http://stackoverflow.com/questions/16772071/sort-dict-by-value-python

To get the values use

sorted(data.values())
To get the matching keys, use a key function

sorted(data, key=data.get)
To get a list of tuples ordered by value

sorted(data.items(), key=lambda x:x[1])

тут лучше
http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/
How to sort a dict by value (Python 2.4 or greater):

Код: Выделить всё

for keyvalue in sorted(mydict.iteritems(), key=lambda (k,v): (v,k)):
    print 
"%s: %s" % (keyvalue
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 5 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#17 dyvniy » Вт, 10 февраля 2015, 11:56:02

Просмотр функций filename.рус

Код: Выделить всё


import filename 
#.pyc - расширение не нужно
print dir(filename)
 


Шифрование в питоне
http://habrahabr.ru/post/189772/
Изображение

dyvniy M
Автор темы, Администратор
Администратор
Аватара
dyvniy M
Автор темы, Администратор
Администратор
Возраст: 41
Репутация: 1
Лояльность: 1
Сообщения: 3579
Зарегистрирован: Ср, 10 октября 2012
С нами: 11 лет 5 месяцев
Профессия: Программист
Откуда: Россия, Москва
ICQ Сайт Skype ВКонтакте

#18 dyvniy » Пт, 27 февраля 2015, 12:55:24

Плагины для sublime text
http://habrahabr.ru/post/235901/

C++ к сублиму
http://habrahabr.ru/post/167353/

sublime vs visualstudio
http://stackoverflow.com/questions/13161327/is-su ... ul-as-a-c-ide-vs-visual-studio

ещё плагины
http://blog.brainf.net/soft/ustanavlivaem-i-nastraivaem-sublimetext3/
Спойлер
Я не раз натыкался на массу положительных отзывов о редакторе Sublime Text. А решение сменить основную ОС на Linux заставило искать кроссплатформенное решение и Sublime стал для меня отличной альтернативой Notepad++. Теперь это один из моих основных рабочих инструментов.
Установить редактор можно скачав его на официальном сайте. Sublime Text 3 на момент написания статьи все еще Beta, но тем не менее он отлично работает и я использую именно эту версию. Редактор является условно бесплатным. Единственное отличие бесплатной версии это надпись UNREGISTERED в заголовке и периодически всплывающее окошко с предложением купить редактор.
Есть впрочем способ использовать редактор бесплатно. Необходимо заменить исполняемый файл скачанным из репозитория.
Настройка Sublime Text 3
Редактор очень богат возможностями кастомизации и настройками.
Установка Pakage Control
Pakage Control — это плагин для Sublime Text позволяющий упростить поиск, установку и обновление других плагинов. Делать все эти операции можно и вручную, но лень — двигатель всех программистов и все последующие плагины мы будем ставить именно с помощью Package Control
Для того чтобы установить Pakage Control для вашего Sublime Text необходимо открать консоль комбинацией ctrl+` либо из меню View > Show Console menu и запустить следующую комманду скопированную с официальной страницы этого плагина
Пользоватся Package Control достаточно просто. Выбераем в меню Preference > Package Control
Package Control: Install Package
Далее начинаем вводить название необходимого пакета, выбираем его в списке и видим в статусной строке уведомление о том что идет установка.
Утановка плагинов
Soda Theme — пожалуй самая популярная тема для Sublime Text. Существует в двух вариациях (светлая и темная). После установки включаем в настройках "theme": "Soda Dark 3.sublime-theme" и перезапускаем редактор.
Emmet (бавший Zen Coding) — это плагин позволяющий писать html-код своеобразной стенографией, сэкономивший мне далеко не один десяток трудочасов.
SublimeCodeIntel — делает ваш редактор чуть более близким к IDE по функционалу. Добавляет к возможностям редактора контекстный автокомплит, быстрый переход к объявлению функций и переменных и отображение информации о функции в статусной строке.
SideBarEnhancements — расширяет возможности работы с файлами в сайдбаре. Открыть во внешнем редакторе, создать файл/папку, переместить, копировать, открыть, запустить и. т.д.
Alignment — поможет вам взмахом руки (Ctrl+Alt+A) выровнять выделенный текст согласно заданным настройкам.
Encoding Helper — покажет в строке состояния кодировку открытого файла и сообщит если файл открыт в неверной кодировке.
BracketHighlighter — очень удобно подсветит парные теги, скобки, кавычки.
Изображение


Название раздела: Python
Описание: Программирование на супер модном мега крутом языке Питон.

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения
:) ;) :hihi: :P :hah: :haha: :angel: :( :st: :_( :cool: 8-| :beee: :ham: :rrr: :grr: :* :secret: :stupid: :music: Ещё смайлики…
   

Вернуться в «Python»

Кто сейчас на форуме (по активности за 15 минут)

Сейчас этот раздел просматривают: 7 гостей