Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
t = Timer(""" res = ""
Содержание книги
- 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
- inspect.getmoduleinfo('/usr/local/lib/python2.3/inspect.pyc') ('inspect', '.pyc', 'rb', 2)
- gt;>> inspect.getsourcefile(inspect)
- x1', 'y1'], ['x2', 'y2']], None, None, None)
- f_back : <frame object at 0x812383c>
- Одно из наиболее частых применений модуля traceback- "мягкая"обработка исключений
from timeit import Timer
t = Timer(""" res = ""
for k in range(1000000,1010000): res += str(k)
""")
print t.timeit(200)
t = Timer(""" res = []
for k in range(1000000,1010000): res.append(str(k))
res = ",".join(res)
""")
print t.timeit(200)
t = Timer("""
res = ",".join([str(k) for k in range(1000000,1010000)])
""")
print t.timeit(200)
Разные версииPythonдадут различные результаты прогонов:
# Python 2.3 77.6665899754 10.1372740269 9.07727599144
# Python 2.4 9.26631307602 9.8416929245 7.36629199982
В старых версияхPythonрекомендуемым способом конкатенации большого количества
строк являлось накопление их в списке с последующим применением функции join()
(кстати, инкрементная конкатенация почти в восемь раз медленнее этого приема). Начиная с версии2.4,инкрементная конкатенация была оптимизирована и теперь имеет даже лучший результат,чем версия со списками(которая вдобавок требует больше памяти).Но чемпионом все-таки является работа со списковым включением,поэтому свертывание циклов в списковое включение позволяет повысить эффективность кода.
Если требуются более точные результаты,рекомендуется использовать метод repeat(n, k)- он позволяет вызывать timeit(k) n раз, возвращая список из n значений. Необходимо отметить,что на результаты может влиять загруженность компьютера,на котором проводятся испытания.
Оптимизация
Основная реализация языкаPythonпока что не имеет оптимизирующего компилятора,
поэтому разговор об оптимизации касается только оптимизации кода самим программистом.В любом языке программирования имеются свои характерные приемы оптимизации кода.Оптимизация(улучшение)кода может происходить в двух(зачастую конкурирующих)направлениях:скорость и занимаемая память.В условиях достатка оперативной памяти приложения обычно оптимизируют по скорости.При оптимизации по времени программы для одноразового вычисления следует иметь в виду,что в общее время решения задачи входит не только выполнение программы,но и время ее написания.Не стоит тратить усилия на оптимизацию программы,если она будет использоваться очень редко.
|