Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Еще одним способом коммуникации между объектами являются события.Экземпляры
Содержание книги
- Получает строку s с приветствиемPOP3-сервера
- Команда аналогичнаretr,но Загружает только заголовок и
- Функции для загрузки сетевых объектов
- n=1&n=3&n=4&button=%F0%D2%C9%D7%C5%D4
- def download(url, file): import urllib, time start_t = time.time()
- urlparse(url, scheme='', allow_fragments=1)
- authinfo.add_password('My page', 'localhost', 'user1', 'secret')
- Вызвать удаленную функцию print req.add(1, 3)
- from SimpleXMLRPCServer import SimpleXMLRPCServer
- Лекция#10:Работа с базой данных
- Работа с базой данных из python-приложения
- Поддерживаетdb-api 2. 0,а значит,переход на любую другую субд потребует минимальных изменений в вызове функции connect() и,возможно,использования более
- Следующий сценарий создаст таблицу в базе данных(в случае сsqliteзаботиться о создании базы данных не нужно:файл создастся автоматически. Для других баз данных
- c = db.connect(database="tvprogram") cu = c.cursor()
- ОРТ|Новости|Новости|9.15 10.02.2003 9.15|ОРТ|"НЕЖНЫЙ ЯД"|Сериал|10.15
- c = db.connect(database="tvprogram") cu = c.cursor()
- Для СУБДPostgreSQLнужно взять неPyGreSQL,аpsycopg,так как в первом есть
- Лекция#11:Многопоточные вычисления
- Поддержка многопоточности в языкеPythonдоступна через использование ряда модулей.В
- Пример многопоточной программы
- Thread(group, target, name, args, kwargs)
- print "Hello, world!"
- Замки позволяют ограничивать вход в некоторую область программы одним потоком. Замки могут потребоваться для обеспечения целостности структуры данных. Например,если для
- print "Процесс %s запрашивает ресурс %s" % (n, r)
- from threading import BoundedSemaphore maxconnections = 5
- Еще одним способом коммуникации между объектами являются события.Экземпляры
- notify() и notifyAll() другими потоками.Необязательный аргумент timeout
- quot;""Занесение нового элемента в контейнер и оповещение потоков"""
- quot;""Занесение нового элемента в контейнер и оповещение потоков"""
- Следующий пример иллюстрирует параллельность выполнения потоков,используя возможности библиотеки графических примитивов Tkinter(она входит в стандартную
- quot;""Выход из программы"""
- Параллельное программирование требует тщательной отработки взаимодействия между потоками управления.Некоторые участки кода необходимо ограждать от одновременного
- В лекции будет рассматриваться пакетtkinter,который по сути является оберткой дляtcl/tk - известного графического пакета для сценарного языка tcl. На примере этого
- Вхождение курсора в пределы виджета
- Focusin. Получение фокуса окном. Focusout. Keypress. Нажатие клавиши на клавиатуре. Keyrelease. Отжатие клавиши на клавиатуре. Выход курсора за пределы виджета. Motion. Движение мыши в пределах виджета. Mousewheel. Прокрутка колесика мыши. Reparent. Измен
- tk = Tk() # основное окно приложения
- Создание и конфигурирование виджета
- from Tkinter import * tk = Tk()
- При желании можно задать стилевые опции для всех виджетов сразу:с помощью метода tk_setpalette(). Помимо использованных выше свойств в этом методе можно
- from Tkinter import * import urllib
- from Tkinter import * tk = Tk()
- b[1, 3].pack(side=BOTTOM, fill=Y) b[1, 4].pack(side=BOTTOM, fill=BOTH)
- import Tkinter, Image, ImageTk
- start=0, extent=150, fill="blue")
- c.itemconfigure(CURRENT, fill=choice(colors))
- c = Canvas(tk, height=300, bg="white")
- Виджеты располагаются внутри другого виджета(например,рамки)в соответствии с набором правил.Этот набор правил реализуют менеджеры расположения,которых в
- Лекция#13:ИнтеграцияPythonс другими языками
- Py_Finalize(),Py_NewInterpreter(),Py_EndInterpreter(),Py_SetProgramName() и
- include "Python.h" #include "md5.h"
События
Еще одним способом коммуникации между объектами являются события.Экземпляры
класса threading.Event могут быть использованы для передачи информации о наступлении некоторого события от одного потока одному или нескольким другим потокам.Объекты-события имеют внутренний флаг,который может находиться в установленном или сброшенном состоянии.При своем создании флаг события находится в сброшенном состоянии.Если флаг в установленном состоянии,ожидания не происходит:поток,вызвавший метод wait() для ожидания события,просто продолжает свою работу.Ниже приведены методы экземпляров класса threading.Event:
· set()Устанавливает внутренний флаг,сигнализирующий о наступлении события.Все ждущие данного события потоки выходят из состояния ожидания.
· clear()Сбрасывает флаг.Все события,которые вызывают метод wait() этого объекта-события,будут находиться в состоянии ожидания до тех пор,пока флаг сброшен,или по истечении заданного таймаута.
· isSet()Возвращает состояние флага.
· wait([timeout])Переводит поток в состояние ожидания,если флаг сброшен,и сразу возвращается,если флаг установлен.Аргумент timeout задает таймаут в секундах,по истечении которого ожидание прекращается,даже если событие не наступило.
Составить пример работы с событиями предлагается в качестве упражнения.
Условия
Более сложным механизмом коммуникации между потоками является механизм условий.Условия представляются в виде экземпляров класса threading.Condition и,подобно только что рассмотренным событиям,оповещают потоки об изменении некоторого состояния.Конструктор класса threading.Condition принимает необязательный параметр,задающий замок класса threading.Lock или threading.RLock.По умолчанию создается новый экземпляр замка класса threading.RLock.Методы объекта-условия описаны ниже:
· acquire(...)Запрашивает замок.Фактически вызывается одноименный метод принадлежащего объекту-условию объекта-замка.
· release()Снимает замок.
· wait([timeout])Переводит поток в режим ожидания.Этот метод может быть вызван только в том случае,если вызывающий его поток получил замок.Метод снимает замок и блокирует поток до появления объявлений,то есть вызовов методов
|