Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Поддержка многопоточности в языкеPythonдоступна через использование ряда модулей.В
Содержание книги
- lt;li tal:define="s modules/string" tal:repeat="el python:s.digits">
- Каждый сокет относится к одному из коммуникационных доменов. Модуль socket
- def do_something(x): lst = map(None, x); lst.reverse();
- print socket.getservbyname(srv, 'tcp'), srv
- Здравствуйте. Я изучаю курс по языку Python и отправляю письмо его автору.
- From smtplib import SMTP connect = smtp('mx. Abcde. Ru') connect. Set_debuglevel(1)
- Учетные данные пользователя: Server = "pop. Server. Com" username = "user" userpassword = "secretword"
- Получает строку 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
Потоки управления(threads)образуются и работают в рамках одного процесса.В однопоточном приложении(программе,которая не использует дополнительных потоков)имеется только один поток управления.Говоря упрощенно,при запуске программы этот поток последовательно исполняет встречаемые в программе операторы,направляясь по одной из альтернативных ветвей оператора выбора,проходит через тело цикла нужное число раз,выбирается к месту обработки исключения при возбуждении исключения.В любой момент времени интерпретаторPythonзнает,какую команду исполнить следующей.После исполнения команды становится известно,какой команде передать управление.Эта
ниточка непрерывна в ходе выполнения программы и обрывается только по ее завершении.
Теперь можно представить себе,что в некоторой точке программы ниточка раздваивается,и каждый поток идет своим путем.Каждый из образовавшихся потоков может в дальнейшем еще несколько раз раздваиваться. (При этом один из потоков всегда остается главным,и его завершение означает завершение всей программы.)В каждый момент времени интерпретатор знает,какую команду какой поток должен выполнить,и уделяет кванты времени каждому потоку.Такое,казалось бы,незначительное усложнение
механизма выполнения программы на самом деле требует качественных изменений в программе-ведь деятельность потоков должна быть согласована.Нельзя допускать,чтобы потоки одновременно изменяли один и тот же объект,результат такого изменения,скорее всего,нарушит целостность объекта.
Одним из классических средств согласования потоков являются объекты,называемые семафорами.Семафоры не допускают выполнения некоторого участка кода несколькими потоками одновременно.Самый простой семафор-замок(lock)или mutex(от английскогоmutually exclusive,взаимоисключающий).Для того чтобы поток мог продолжить выполнение кода,он должен сначала захватить замок.После захвата замка поток выполняет определенный участок кода и потом освобождает замок,чтобы другой
поток мог его получить и пройти дальше к выполнению охраняемого замком участку программы.Поток,столкнувшись с занятым другим потоком замком,обычно ждет его освобождения.
стандартном модуле threading определены нужные для разработки многопоточной(multithreading) программы классы: несколько видов семафоров (классы замков Lock, RLock и класс Semaphore)и другие механизмы взаимодействия между потоками(классы Event и Condition),класс Timer для запуска функции по прошествии некоторого времени.Модуль Queue реализует очередь,которой могут пользоваться сразу несколько потоков.Для создания и(низкоуровневого)управления потоками в стандартном модуле thread определен класс Thread.
|