Thursday, November 12, 2009

SrPy

Java JVM icinde Python kodu isletebilen Jython, C kodlari kullanan Python kutuphaneleri ne yazik ki isletemedigi icin Scipy, Numpy gibi icinde C kodu iceren kutuphanelere erismek icin, ayri sureclerde (process) isleyen Python kodlari lazim. Bu baglanti Python -> Python iletisimi olacak; Client tarafindaki Python, Jython ile isleyecek, server tarafi ise bildigimiz komut satirindan "python" komutu ile baslattigimiz kodlar olacak. Bu kodlar her turlu C bazli kutuphaneye erisebilecek, sonucu baglanan tarafa dondurecek.

SrPy, Simple Remote Python paketi iki surec (process) arasinda uzak cagri (remote procedure call) yapilabilmesini sagliyor. Kurmak icin

http://code.google.com/p/srpy/

adresinden kodu indirin, actiktan sonra python ez_install.py ile kodlari kurabilirsiniz.

Deneme icin server.py adli bir dosyada
from pylab import *

def doit():
return normal(0,sqrt(10))
Simdi srpy kurulan dizine girerek: python srpy/srpyapp.py isletelim. Bu bir server sureci baslatacak. Soyle bir ekran geliyor:
SRPy Server - Simple Remote Python, Network Server
http://code.google.com/p/srpy/ - updates, documentation, examples and support
Starting Basic Server...
URI info:
PYRO://127.0.1.1:7766/[BIR SAYI]
Client tarafi ise suna benzer:
import sys
sys.path.append('[SRPY DIZINI]')
import srpy

pyeng=srpy.PythonEngine("[PYRO IBARESINI ICEREN URL TAMAMEN]")
pyeng.imp("sys")
pyeng.eval("sys.path.append('[SERVER.PY KODUNUN DIZINI]')")
pyeng.exe("from server import doit");
pyeng.exe("x = doit()")
print pyeng.get('x')
pyeng.exe("x = doit()")
print pyeng.get('x')
pyeng.exe("x = doit()")
print pyeng.get('x')
Ustteki kodu Jython ile islettigimizde Numpy uzerinden uretilmis bir rasgele sayinin ekrana basildigini gorecegiz.

No comments: