Sveucilište u Zagrebu

Слични документи
Uvod u računarstvo 2+2

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Microsoft PowerPoint - JavaP9_2019

070-ALIP2-udzbenik.indb

Računarski praktikum I - Vježbe 01 - Uvod

Tutoring System for Distance Learning of Java Programming Language

PowerPoint Presentation

Uvod u računarstvo 2+2

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

Slide 1

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Tutoring System for Distance Learning of Java Programming Language

Slide 1

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Funkcije predavač: Nadežda Jakšić

Tutoring System for Distance Learning of Java Programming Language

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

KATUŠIĆ ANTONIO.pdf

PuTTY CERT.hr-PUBDOC

Uvod u PHP

PowerPoint Presentation

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Slide 1

Uvod u računarstvo 2+2

Slide 1

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

Microsoft PowerPoint - 5. Predavanje-w2.pptx

PowerPoint Presentation

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Microsoft PowerPoint - podatkovni promet za objavu.pptx

Uvod u računarstvo 2+2

Funkcije predavač: Nadežda Jakšić

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

Microsoft Word - 11 Pokazivaci

Tutoring System for Distance Learning of Java Programming Language

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 10 Zvonimir Bujanović Luka Grubišić Vinko Petričević

Slide 1

Državna matura iz informatike

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

Str. 0 Programiranje Priručnik Programiranje Zagreb, godina Ovo je djelo dano na korištenje pod licencom Creative Commons Imenovanje-Nekomercija

Grananje u programu predavač: Nadežda Jakšić

Računarski praktikum I - Vježbe 09 - this, static

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA Seminarski rad u okviru predmeta Računalna forenzika BETTER PORTABLE GRAPHICS FORMAT Matej

PowerPoint Presentation

Primenjeno programiranje - Vežbe

Programiranje 1

Programski jezik C

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

PowerPoint Presentation

Programski jezik C

3.Kontrlne (upravlja~ke) strukture u Javi

Microsoft Word - WP_kolokvij_2_rjesenja.doc

PDF = Potencijalno destruktivan fajl

Microsoft Word - IP_Tables_programski_alat.doc

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

PDO

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode]

CLI

АГЕНЦИЈА ЗА БАНКАРСТВО РЕПУБЛИКЕ СРПСКЕ УПУТСТВО ЗА ЕЛЕКТРОНСКО ДОСТАВЉАЊЕ ПОДАТАКА ИЗ ОБЛАСТИ РЕСТРУКТУРИРАЊА БАНАКА Бања Лука, јули године

Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B.

Programski jezici i strukture podataka

Recuva CERT.hr-PUBDOC

Pojačavači

Datoteke predavač: Nadežda Jakšić

OpenVPN GUI CERT.hr-PUBDOC

PowerPoint Presentation

PROMENLJIVE, TIPOVI PROMENLJIVIH

PHP kod

PROGRAM USAVRŠAVANJA NASTAVNIKA ZA PROVEDBU KURIKULUMA FAKULTATIVNE NASTAVE ICT Znanstveni laboratorij Osijek/Split, listopad lipanj 2016.

Microsoft Word - 6. RAZRED INFORMATIKA.doc

PASCAL UVOD 2 II razred gimnazije

Microsoft Word - 02 Elementi programskog jezika Pascal

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc

Microsoft Word - Trgovinski_prirucnik-2017-XETRA

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71

Programiranje za UNIX Okruženje unix procesa

Otvoreno racunarstvo - Prijavni obrzac - e-kolegij

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Primenjeno programiranje - vezbe GUI i baze podataka

8 2 upiti_izvjesca.indd

Slide 1

Microsoft Word - CCERT-PUBDOC doc

Apache Maven Bojan Tomić

Državno natjecanje / Osnove informatike Srednje škole Zadaci U sljedećim pitanjima na odgovore odgovaraš upisivanjem slova koji se nalazi ispred

03 SUBP

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

Транскрипт:

Proširivanje Pythona programskim jezicima C/C++ Ivo Majić Mentor: Doc. dr. sc. Domagoj Jakobović Sveučilište u Zagrebu Fakultet elektrotehnike i računarstva Ak. god. 2011/12 Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 1 / 19

Sadržaj predavanja Uvod Python/C API Dodatni alati Ubrzanje Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 2 / 19

Uvod http://www.python.org/ različite implementacije Jython (Java) IronPython (C#) CPython (C, referentna implementacija) zamišljen kao jako proširiv programski jezik dio standardne biblioteke (CPython) pisan u C-u Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 3 / 19

Python/C API definira odredeni broj funkcija, makroa i varijabli jedan od ciljeva - ubrzanje konačnog programa datoteka zaglavlja #i n c l u d e <Python. h> Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 4 / 19

Python/C API - primjer korištenja Funkcija koju želimo pozivati u Pythonu: i n t z b r o j i ( i n t b r o j 1, i n t b r o j 2 ) { r e t u r n b r o j 1+b r o j 2 ; } Omotač funkcija (eng. wrapper function): s t a t i c PyObject w z b r o j i ( PyObject s e l f, PyObject a r g s ) { i n t b r o j 1, b r o j 2 ; i f (! PyArg ParseTuple ( args, i i, &b r o j 1, &b r o j 2 ) ) r e t u r n NULL ; i n t r e z u l t a t = z b r o j i ( b r o j 1, b r o j 2 ) ; r e t u r n P y B u i l d V a l u e ( i, r e z u l t a t ) ; } Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 5 / 19

Python/C API - primjer korištenja Tablica: Format string znakovi Znak i c f d s O Opis pretvara Python integer u C int pretvara Python string duljine 1 u C char pretvara Python float u C float pretvara Python float u C double pretvara Python string u niz C charova vraća pokazivač na PyObject bez pretvorbe format znak O - Python specifični tipovi podataka (PyListObject, PyDictObject, PySetObject,... ) Tablica: PyListObject funkcije Funkcija PyList Check(PyObject *p) PyList Size(PyListObject *list) PyList GetItem(PyListObject *list, int i) Opis vraća True ako je tipa PyListObject vraća duljinu liste vraća i-ti element liste Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 6 / 19

Python/C API - primjer korištenja popis funkcija dostupnih unutar proširenja (eng. module) s t a t i c PyMethodDef racunop methods [ ] = { { z b r o j i, w z b r o j i, METH VARARGS, z b r o j i d o c }, {NULL, NULL, 0, NULL} / S e n t i n e l / } ; incijalizacijska funkcija (format initimemodula()) PyMODINIT FUNC i n i t r a c u n o p ( void ) { P y I n i t M o d u l e ( racunop, racunop methods, r acunop doc ) ; } Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 7 / 19

Python/C API - primjer korištenja prevodenje (python setup.py build) from d i s t u t i l s. c o r e import s e t u p from d i s t u t i l s. c o r e import E x t e n s i o n module = E x t e n s i o n ( racunop, s o u r c e s = [ racunop. c ] ) s e t u p ( name= racunop, v e r s i o n= 1. 0, e x t m o d u l e s =[ module ] ) Slika: setup.py rezultat racunop.so (Linux) racunop.pyd (Windows) pozivanje unutar Pythona import racunop Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 8 / 19

Dodatni alati SWIG Ctypes (Python proširenje) Cython Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 9 / 19

Dodatni alati - SWIG Slika: SWIG tok izvodenja alat za automatizirano generiranje poveznica (eng. bindings) http://www.swig.org/ Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 10 / 19

Dodatni alati - SWIG - primjer korištenja #i n c l u d e <s t d i o. h> #i n c l u d e B r o j e v i. h B r o j e v i : : B r o j e v i ( i n t br1, i n t br2 ) { t h i s >br1 = br1 ; t h i s >br2 = br2 ; } void B r o j e v i : : z b r o j ( ) { p r i n t f ( Z b r o j j e : %d\n, t h i s >br1+t h i s >br2 ) ; } void B r o j e v i : : umnozak ( ) { p r i n t f ( Umnozak j e : %d\n, t h i s >br1 t h i s >br2 ) ; } Slika: Brojevi.cpp Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 11 / 19

Dodatni alati - SWIG - primjer korištenja datoteka zaglavlja te konfiguracijska datoteka c l a s s B r o j e v i { i n t br1 ; i n t br2 ; p u b l i c : B r o j e v i ( i n t br1, i n t br2 ) ; void z b r o j ( ) ; void umnozak ( ) ; } ; Slika: Brojevi.h %module racunop %{ #i n c l u d e B r o j e v i. h %} %i n c l u d e B r o j e v i. h Slika: racunop.i prevodenje swig -python -c++ racunop.i g++ -c racunop.cpp g++ -I/usr/include/python2.7 -c racunop wrap.cxx ld -shared -o racunop.so racunop.o racunop wrap.o libstdc++.so Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 12 / 19

Dodatni alati - SWIG - primjer korištenja pozivanje u Pythonu >> import racunop >> v a r = racunop. B r o j e v i ( 3, 5 ) >> v a r. z b r o j ( ) Z b r o j j e : 8 >> v a r. umnozak ( ) Umnozak j e : 15 Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 13 / 19

Dodatni alati - Ctypes Slika: Ctypes tok izvodenja dio Pythonove standardne biblioteke nema podrške za C++ klase podržani CDLL, OleDLL te WinDLL Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 14 / 19

Dodatni alati - Ctypes - primjer korištenja import c t y p e s b i b l i o t e k a = c t y p e s. c d l l. L o a d L i b r a r y ( l i b c. so ) d e f s l e e p ( s e k u n d i ) : p r i n t Spavam %d s e k u n d i % s e k u n d i b i b l i o t e k a. s l e e p ( s e k u n d i ) T e s t i r a n j e s l e e p ( 5 ) Slika: Implementacija sleep() funkcije Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 15 / 19

Dodatni alati - Cython Slika: Cython tok izvodenja http://www.cython.org/ prevodioc koji proširuje sintaksu programskog jezika Python mogućnost statičkog definiranja C tipova podataka (cdef naredba) prevodenje korištenjem distutils proširenja Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 16 / 19

Dodatni alati - Cython - primjer korištenja 1 def p r o s t i ( i n t N ) : 2 c d e f i n t n, k, i 3 c d e f i n t p [N] 4 r e z u l t a t = [ ] 5 k = 0 6 n = 2 7 w h i l e k < N: 8 i = 0 9 w h i l e i < k and n % p [ i ]!= 0 : 10 i = i + 1 11 i f i == k : 12 p [ k ] = n 13 k = k + 1 14 r e z u l t a t. append ( n ) 15 n = n + 1 16 r e t u r n r e z u l t a t Slika: prosti.pyx Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 17 / 19

Ubrzanje Slika: Trajanje izračuna prvih N prostih brojeva (u sekundama) Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 18 / 19

Zaključak Hvala na pažnji! Pitanja? Ivo Majić (FER) Sveučilište u Zagrebu Ak. god. 2011/12. 19 / 19