Вход/Регистрация
Язык программирования Python
вернуться

Сузи Роман Арвиевич

Шрифт:

Стоит еще раз напомнить, что в отличие от Python, в языке C/C++ управление памятью должно происходить в явном виде. Именно поэтому добавлена функция free при преобразовании типа. Если этого не сделать, возникнут утечки памяти. Эти утечки можно обнаружить, при многократном выполнении функции:

Листинг

>>> import freq

>>> for i in xrange(1000000):

… dummy = freq.frequency(«ABCDEF»)

>>>

Если функция freq.frequency имеет утечки памяти, выполняемый процесс очень быстро займет всю имеющуюся память.

Интеграция Python и других систем программирования

Язык программирования Python является сценарным языком, а значит его основное назначение — интеграция в единую систему разнородных программных компонентов. Выше рассматривалась (низкоуровневая) интеграция с C/C++-приложениями. Нужно заметить, что в большинстве случаев достаточно интеграции с использованием протокола. Например, интегрируемые приложения могут общаться через XML–RPC, SOAP, CORBA, COM, .NET и т.п. В случаях, когда приложения имеют интерфейс командной строки, их можно вызывать из Python и управлять стандартным вводом–выводом, переменными окружения. Однако есть и более интересные варианты интеграции.

Современное состояние дел по излагаемому вопросу можно узнать по адресу: http://www.python.org/moin/IntegratingPythonWithOtherLanguages

Java

Документация по Jython (это реализация Python на Java–платформе) отмечает, что Jython обладает следующими неоспоримыми преимуществами над другими языками, использующими Java–байт–код:

Jython–код динамически компилирует байт–коды Java, хотя возможна и статическая компиляция, что позволяет писать апплеты, сервлеты и т.п.;

Поддерживает объектно–ориентированную модель Java, в том числе, возможность наследовать от абстрактных Java–классов;

Jython является реализацией Python — языка с практичным синтаксисом, обладающего большой выразительностью, что позволяет сократить сроки разработки приложений в разы.

Правда, имеются и некоторые ограничения по сравнению с «обычным» Python. Например, Java не поддерживает множественного наследования, поэтому в некоторых версиях Jython нельзя наследовать классы от нескольких Java–классов (в тоже время, множественное наследование поддерживается для Python–классов).

Следующий пример (файл lines.py) показывает полную интеграцию Java–классов с интерпретатором Python:

Листинг

# Импортируются модули из Java

from java.lang import System

from java.awt import *

# А это модуль из Jython

import random

# Класс для рисования линий на рисунке

class Lines(Canvas):

# Реализация метода paint

def paint(self, g):

X, Y = self.getSize.width, self.getSize.height

label.setText("%s x %s» % (X, Y))

for i in range(100):

x1, y1 = random.randint(1, X), random.randint(1, Y)

x2, y2 = random.randint(1, X), random.randint(1, Y)

g.drawLine(x1, y1, x2, y2)

# Метки, кнопки и т.п.

panel = Panel(layout=BorderLayout)

label = Label(«Size», Label.RIGHT)

panel.add(label, «North»)

button = Button(«QUIT», actionPerformed=lambda e: System.exit(0))

panel.add(button, «South»)

lines = Lines

panel.add(lines, 'Center')

# Запуск панели в окне

import pawt

pawt.test(panel, size=(240, 240))

Программы на Jython можно компилировать в Java и собирать в jar–архивы. Для создания jar–архива на основе модуля (или пакета) можно применить команду jythonc, которая входит в комплект Jython. Из командной строки это можно сделать примерно так:

Листинг

jythonс–d–c–j lns.jar lines.py

Для запуска приложения достаточно запустить lines из командной строки:

Листинг

java–classpath "$CLASSPATH» lines

В переменной $CLASSPATH должны быть пути к архивам lns.jar и jython.jar.

Prolog

Для тех, кто хочет использовать Prolog из Python, существует несколько возможностей:

Версия GNU Prolog (сайт: интегрируется с Python посредством пакета bedevere (сайт:

Имеется пакет PyLog для работы с SWI–Prolog из Python

Можно использовать пакет pylog (доступен с сайта:, который добавляет основные возможности Prolog в Python

Эти три варианта реализуют различные способы интеграции возможностей Prolog в Python. Первый вариант использует SWIG, второй организует общение с Prolog–системой через конвейер, а третий является специализированной реализацией Prolog.

  • Читать дальше
  • 1
  • ...
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: