Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Py_Finalize(),Py_NewInterpreter(),Py_EndInterpreter(),Py_SetProgramName() и
Содержание книги
- 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"
- number of bits, modulo 2^64 (lsb
- return PyString_FromStringAndSize((char *)aDigest, 16);
- MD5_new(PyObject *self, PyObject *args)
- Пример встраивания интерпретатора в программу на C
- Здесь же следует сделать Еще одно замечание:программа,встраивающаяpython,не должна много раз выполнять py_initialize() и py_finalize(),так как это может
- File : freq.i */ %module freq. typemap(out) int * { int i;. result = PyTuple_New(256); for(i=0; i<256; i++). PyTuple_SetItem($result, i, PyLong_FromLong($1[i])); free($1);. extern int * frequency(char s[]);. swig -python freq.i. I/usr/local/lib/python2
- PyLong_FromLong(result[i])); free(result);
- X, Y = self.getSize().width, self.getSize().height label.setText("%s x %s" % (X, Y))
- panel.add(button, "South") lines = Lines() panel.add(lines, 'Center')
- print " yes:", query
- let foo_bar_print = pywrap_closure
- import StringIO, token, tokenize
- prog_example = """
- import pprint, token, parser, symbol
- Здесь необходимо заметить,что недавно вPythonпоявился пакет compiler,который
- Отладка. lst.append(ord(i)) return lst. gt; lst = [] (Pdb) n. gt; /examples/myfun.py(6)fun() -> lst.append(ord(i)). usr/bin/python. File myfun.py. gt; lst.append(ord(i)). Pdb) p vars(). i': 'A', 's': 'ABCDE', 'lst': []} (Pdb) n. Pdb) p vars(). i':
- print "\n".join(difflib.get_close_matches(word + "\n", open("russian.txt")))
- profile:0(print_close_matches("профайлер"))
- t = Timer(""" res = ""
- Следует учитывать,что программа,реализующая некоторый алгоритм,не может быть оптимизирована до бесконечно малого времени вычисления:используемый алгоритм имеет
- from string import split a = "x y z"
- import string a = "a b c"
- gt;>> issubclass(str, basestring) True
Py_Finalize(),Py_NewInterpreter(),Py_EndInterpreter(),Py_SetProgramName() и
другие),
· управление подсчетом ссылок(макросы Py_INCREF(),Py_DECREF(),Py_XINCREF(),
Py_XDECREF(),Py_CLEAR()).Требуется при создании или удаленииPython-объектов вC/C++-коде.
· обработка исключений(PyErr*-функции и PyExc_*-константы,например,
PyErr_NoMemory() и PyExc_IOError)
· управление процессом и сервисы операционной системы(Py_FatalError(),
Py_Exit(),Py_AtExit(),PyOS_CheckStack(),и другие функции/макросы PyOS*),
· импорт модулей(PyImport_Import() и другие),
· поддержка сериализации объектов(PyMarshal_WriteObjectToFile(),
PyMarshal_ReadObjectFromFile() и т.п.)
· поддержка анализа строки аргументов(PyArg_ParseTuple(),PyArg_VaParse(),PyArg_ParseTupleAndKeywords(),PyArg_VaParseTupleAndKeywords(),PyArg_UnpackTuple() и Py_BuildValue()).С помощью этих функций облегчается задача получения в коде наCпараметров,заданных при вызове функции изPython.
Функции PyArg_Parse* принимают в качестве аргумента строку формата полученных аргументов,
· поддержка протоколов абстрактных объектов: +Протокол объекта
(PyObject_Print(), PyObject_HasAttrString(), PyObject_GetAttrString(), PyObject_HasAttr(),PyObject_GetAttr(),PyObject_RichCompare(), ...,PyObject_IsInstance(),PyCallable_Check(),PyObject_Call(),PyObject_Dir() и
другие).То,что должен уметь делать любой объектPython +Протокол числа
(PyNumber_Check(), PyNumber_Add(), ..., PyNumber_And(), ..., PyNumber_InPlaceAdd(), ...,PyNumber_Coerce(),PyNumber_Int(), ...).То,что должен делать любой объект,представляющий число+Протокол последовательности(PySequence_Check(),PySequence_Size(),PySequence_Concat(),PySequence_Repeat(),PySequence_InPlaceConcat(), ...,PySequence_GetItem(), ...,PySequence_GetSlice(),PySequence_Tuple(),
PySequence_Count(), ...) +Протокол отображения(например,словарь является отображением) (функции:PyMapping_Check(),PyMapping_Length(),PyMapping_HasKey(),PyMapping_Keys(), ...,PyMapping_SetItemString(),PyMapping_GetItemString() и др.) +Протокол итератора(PyIter_Check(),PyIter_Next()) +Протокол буфера(PyObject_AsCharBuffer(),PyObject_AsReadBuffer(),PyObject_AsWriteBuffer(),PyObject_CheckReadBuffer())
· поддержка встроенных типов данных.Аналогично описанному в предыдущем пункте,но уже для конкретных встроенных типов данных.Например: +Булевский объект(PyBool_Check()-проверка принадлежности типу PyBool_Type,Py_False-объект False,Py_True-объект True,
· управление памятью(то есть кучей интерпретатораPython) (функции
PyMem_Malloc(),PyMem_Realloc(),PyMem_Free(),PyMem_New(),PyMem_Resize(),
PyMem_Del()).Разумеется,можно применять и средства выделения памятиC/C++,однако,в этом случае не будут использоваться преимущества управления памятью интерпретатораPython (сборка мусора и т.п.).Кроме того,освобождение памяти нужно производить тем же способом,что и ее выделение.Еще раз стоит напомнить,что повторное освобождение одной и той же области памяти(а равно использование области памяти после ее освобождения)чревато серьезными ошибками,которые компиляторCне имеет возможности распознать.
· структуры для определения объектов встроенных типов(PyObject,PyVarObject и много других)
|