{"id":41221,"date":"2020-02-06T20:42:46","date_gmt":"2020-02-06T17:42:46","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/python-gateway-v-intersystems-iris"},"modified":"2020-02-06T20:42:46","modified_gmt":"2020-02-06T17:42:46","slug":"python-gateway-v-intersystems-iris","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/python-gateway-v-intersystems-iris","title":{"rendered":"Python Gateway InterSystems IRIS'is","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>See artikkel tutvustab Python Gateway't \u2014 kogukonna avatud l\u00e4htekoodiga projekti InterSystems IRIS andmeplatvormil. See projekt v\u00f5imaldab orkestreerida k\u00f5iki masin\u00f5ppe algoritme, mis on loodudPython'i keeles (peamine keskkond paljude andme teadlaste jaoks), ja kasutada mitmeid valmis raamatukogusid, et kiiresti luua kohandatud, robotiseeritud anal\u00fc\u00fctilisi AI\/ML lahendusi InterSystems IRIS platvormil. Selles artiklis n\u00e4itan, kuidas InterSystems IRIS suudab orkestreerida protsesse Python'is, t\u00f5husalt teostada kahepoolselt andmeedastust ja luua intelligentseid \u00e4riprotsesse.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"plan\">Plaani<\/h1>\n<p><\/p>\n<ol>\n<li>Sissejuhatus.<\/li>\n<li>T\u00f6\u00f6riistakast.<\/li>\n<li>Installimine.<\/li>\n<li>API.<\/li>\n<li>Interoperatiivsuse.<\/li>\n<li>Jupyter Notebook.<\/li>\n<li>J\u00e4reldused.<\/li>\n<li>Lingid.<\/li>\n<li>MLToolkit.<\/li>\n<\/ol>\n<p><\/p>\n<h1 id=\"vvedenie\">Sissejuhatus<\/h1>\n<p><\/p>\n<p>Python on k\u00f5rgtasemeline \u00fcldine programmeerimiskeel, mille eesm\u00e4rk on suurendada arendaja tootlikkust ja koodi loetavust. Selles artiklite sarjas r\u00e4\u00e4gin Python'i keele rakendusv\u00f5imalustest InterSystems IRIS platvormil, keskendudes selle artikli p\u00f5hifookusele, mis on Python'i kasutamine masin\u00f5ppemudelite loomiseks ja rakendamiseks.<\/p>\n<p><\/p>\n<p>Masin\u00f5pe (ML) on kunstliku intelligentsuse meetodite klass, mille iseloomulikuks jooniks on mitte probleemi otsene lahendamine, vaid \u00f5ppimine sarnaste probleemide lahendamise protsessis. <\/p>\n<p><\/p>\n<p>Masin\u00f5ppe algoritmid ja mudelid muutuvad \u00fcha levinumaks. P\u00f5hjuseid on mitmeid, kuid k\u00f5ik taandub k\u00e4ttesaadavusele, lihtsusele ja praktiliste tulemuste saavutamisele. Kas klasterdamine v\u00f5i isegi n\u00e4rviv\u00f5rkude modelleerimine on uus tehnoloogia? <\/p>\n<p><\/p>\n<p>Kindlasti mitte, kuid praegu pole enam vajalik kirjutada sadu tuhandeid koodiridu, et k\u00e4ivitada \u00fcks mudel, ning mudelite loomise ja rakendamise kulud v\u00e4henevad j\u00e4rjest enam.<\/p>\n<p><\/p>\n<p>T\u00f6\u00f6riistad arenevad \u2014 kuigi meil pole t\u00e4iesti GUI-suunitlusega AI\/ML t\u00f6\u00f6riistu, toimub see areng, mida oleme kogenud paljude teiste infos\u00fcsteemide klasside, n\u00e4iteks BI (koodikirjutamisest GUI-seadistuslahenduste kasutamiseni) osas, ka AI\/ML t\u00f6\u00f6riistades. Oleme juba \u00fcletanud koodikirjutamisfaasi ja t\u00e4na kasutame mudelite loomise ja \u00f5petamise jaoks raamistikke.<\/p>\n<p><\/p>\n<p>Teised t\u00e4iustused, nagu eel\u00f5petatud mudeli levitamise v\u00f5imalus, kus l\u00f5ppkasutaja peab lihtsalt l\u00f5petama mudeli koolituse oma spetsiifiliste andmete p\u00f5hjal, muudavad masin\u00f5ppe rakendamise alguse lihtsamaks. Need saavutused muudavad masin\u00f5ppe \u00f5ppimise kergemaks nii spetsialistide kui ka ettev\u00f5tete jaoks tervikuna.<\/p>\n<p><\/p>\n<p>Teisest k\u00fcljest kogume \u00fcha rohkem andmeid. T\u00e4nu sellisele \u00fchtsele andmeplatvormile nagu InterSystems IRIS saab kogu see teave kohe ette valmistada ja kasutada masin\u00f5ppe mudelite algandmetena.<\/p>\n<p><\/p>\n<p>Pilve \u00fcleminekuga on AI\/ML projektide k\u00e4ivitamine lihtsam kui kunagi varem. Me saame tarbida ainult neid ressursse, mida vajame. Veelgi enam, t\u00e4nu pilveplatvormide pakutavale paralleelsusele saame s\u00e4\u00e4sta aega.<\/p>\n<p><\/p>\n<p>Aga mis on tulemused? Siin muutuvad asjad keerulisemaks. On palju t\u00f6\u00f6riistu mudelite loomiseks, millest ma r\u00e4\u00e4gin edasi. Hea mudeli loomine ei ole lihtne, kuid mis edasi? Mudeli \u00e4rikasutamine on samuti keeruline \u00fclesanne. Probleemi juured peituvad anal\u00fc\u00fctiliste ja tehingukoormuste ning andmemudelite eristamises. Kui me koolitame mudelit, teeme seda tavaliselt ajalooliste andmete p\u00f5hjal. Kuid mudeli koht on tehingute andmete t\u00f6\u00f6tlemises. Mis kasu on parimast petuskeemide avastamise mudelist, kui me k\u00e4ivitame selle ainult \u00fcks kord p\u00e4evas? Petturid on juba kaua enne seda raha endale saanud. Peame mudelit koolitama ajalooliste andmete peal, kuid peame seda rakendama ka reaalajas uutelt andmetelt, et meie \u00e4ri protsessid saaksid toimida mudeli tehtud prognooside kohaselt.<\/p>\n<p><\/p>\n<p>ML Toolkit \u2014 t\u00f6\u00f6riistade komplekt, mille eesm\u00e4rk on just see: mudelite ja tehingukeskkonna \u00fchendamine, et loodud mudeleid saaks h\u00f5lpsasti kasutada otse teie \u00e4ri protsessides. Python Gateway on osa ML Toolkitist ja tagab integreerimise Pythoniga (sarnaselt R Gateway\u2019le, mis samuti ML Toolkit\u2019i osa, tagab integreerimise R keelele).<\/p>\n<p><\/p>\n<h1 id=\"instrumentariy\">T\u00f6\u00f6riistade komplekt<\/h1>\n<p><\/p>\n<p>Enne kui j\u00e4tkame, sooviksin tutvustada m\u00f5ningaid Python\u2019i t\u00f6\u00f6riistu ja raamatukogusid, mida me hiljem kasutame.<\/p>\n<p><\/p>\n<h2 id=\"tehnologii\">Tehnoloogiad<\/h2>\n<p><\/p>\n<ul>\n<li>Python on t\u00f5lgendatav, k\u00f5rgtasemeline \u00fcldotstarbeline programmeerimiskeel. Keelen\u00e4itajaks on suur matemaatiliste, masin\u00f5ppe ja AI raamatukogude kogum. Nagu ka ObjectScript, on see objektorienteeritud keel, kuid k\u00f5ik m\u00e4\u00e4ratakse d\u00fcnaamiliselt, mitte staatiliselt. K\u00f5ik on samuti objekt. Edasised artiklid eeldavad, et olete keelest hetkeks tuttav. Kui soovite alustada \u00f5ppimist, soovitan alustada <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3.6\/tutorial\/index.html\">dokumentatsioonis<\/a><\/noindex>.<\/li>\n<li>Meie edasiste harjutuste jaoks installige <noindex><a rel=\"nofollow\" href=\"https:\/\/www.python.org\/downloads\/release\/python-367\/\">Python 3.6.7 64 bit<\/a><\/noindex>.<\/li>\n<li>IDE: Kasutan <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/pycharm\/\">PyCharm<\/a><\/noindex>, kuid \u00fcldiselt nende <noindex><a rel=\"nofollow\" href=\"https:\/\/realpython.com\/python-ides-code-editors-guide\/\">palju<\/a><\/noindex>. Kui kasutate Atelierit, on olemas Eclipse'i plugin Pythoni arendamiseks. Kui kasutate VS Code'i, on olemas Pythonile m\u00f5eldud laiendus. <\/li>\n<li>M\u00e4rkmik: IDE asemel saate oma skripte kirjutada ja nendega jagada veebim\u00e4rkmikes. K\u00f5ige populaarsem neist on <noindex><a rel=\"nofollow\" href=\"https:\/\/jupyter.org\/\">Jupyter<\/a><\/noindex>.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"biblioteki\">Raamatukogud<\/h2>\n<p><\/p>\n<p>Siin on (mittet\u00e4ielik) nimekiri masin\u00f5ppe raamatukogudest:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.numpy.org\/\">Numpy<\/a><\/noindex> \u2014 t\u00e4psete arvutuste p\u00f5hipakett.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/pandas.pydata.org\/\">Pandas<\/a><\/noindex> \u2014 k\u00f5rge j\u00f5udlusega andmestruktuurid ja andmeanal\u00fc\u00fcsi t\u00f6\u00f6riistad.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/matplotlib.org\/\">Matplotlib<\/a><\/noindex> \u2014 diagrammide loomine.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/seaborn.pydata.org\/\">Seaborn<\/a><\/noindex> \u2014 andmete visualiseerimine, mis p\u00f5hineb matplotlibil.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/scikit-learn.org\/stable\/\">Sklearn<\/a><\/noindex> \u2014 masin\u00f5ppe meetodid.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/xgboost.readthedocs.io\/en\/latest\/index.html\">XGBoost<\/a><\/noindex> \u2014 masin\u00f5ppe algoritmid, mis toetuvad gradientide t\u00f5usule (Gradient Boosting).<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/radimrehurek.com\/gensim\/\">Gensim<\/a><\/noindex> \u2014 NLP.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/keras.io\/\">Keras<\/a><\/noindex> \u2014 n\u00e4rviv\u00f5rgud.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.tensorflow.org\/\">Tensorflow<\/a><\/noindex> \u2014 masin\u00f5ppe mudelite loomise platvorm.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/pytorch.org\/\">PyTorch<\/a><\/noindex> \u2014 masin\u00f5ppe mudelite loomise platvorm, mis on suunatud Pythonile.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nyoka-pmml\/nyoka\">Nyoka<\/a><\/noindex> \u2014 PMML erinevatest mudelitest.<\/li>\n<\/ul>\n<p><\/p>\n<p>AI\/ML tehnoloogiad aitavad muuta \u00e4ri t\u00f5husamaks ja paindlikumaks. Veelgi enam, t\u00e4nap\u00e4eval muutuvad need tehnoloogiad arendamisel ja rakendamisel lihtsamaks. Alustage AI\/ML-tehnoloogiate uurimist ja \u00f5ppige, kuidas need v\u00f5ivad aidata teie organisatsioonil kasvada.<\/p>\n<p><\/p>\n<h1 id=\"ustanovka\">Installeerimine<\/h1>\n<p><\/p>\n<p>On mitmeid viise Python Gateway'i installimiseks ja kasutamiseks:<\/p>\n<p><\/p>\n<ul>\n<li>O\u0218\n<ul>\n<li>Windows<\/li>\n<li>Linux<\/li>\n<li>Mac<\/li>\n<\/ul>\n<\/li>\n<li>Docker\n<ul>\n<li>Kasutage DockerHubi pilti<\/li>\n<li>Looge oma oma pilt<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>S\u00f5ltumata installimisviisist vajate allika koodi. Ainult koht, kust koodi alla laadida, on <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/releases\">v\u00e4ljaande leht<\/a><\/noindex>. Seal on testitud stabiilsed v\u00e4ljalasked, lihtsalt v\u00f5tke viimane. Hetkel on see 0.8, kuid aja jooksul tuleb uusi versioone. \u00c4rge kloonige\/\u00fcles laadige hoidlat, laadige alla viimane v\u00e4ljalase.<\/p>\n<p><\/p>\n<h2 id=\"os\">O\u0218<\/h2>\n<p><\/p>\n<p>Kui installite Python Gateway'i operatsioonis\u00fcsteemi, peate esmalt (s\u00f5ltumata operatsioonis\u00fcsteemist) Python'i installima. Selleks:<\/p>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.python.org\/downloads\/release\/python-367\/\">Installige Python 3.6.7 64 bit<\/a><\/noindex>. Soovitatav on installida Python vaikekausta.<\/li>\n<li>Installige moodul <code>dill<\/code>: <code>pip install dill<\/code>.<\/li>\n<li>Laadige alla ObjectScript kood (st. <code>do $system.OBJ.ImportDir(&quot;C:InterSystemsReposPythoniscpy&quot;, &quot;*.cls&quot;, &quot;c&quot;,,1)<\/code>) igasse piirkonda, kus on tooted. Kui soovite, et olemasolev piirkond toetaks tooteid, suhelge: <code>write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1)<\/code>.<\/li>\n<li>Paigutage <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/releases\">callout DLL\/SO\/DYLIB<\/a><\/noindex> kausta <code>bin<\/code> teie InterSystems IRIS instantsist. Raamatukogufail peab olema saadaval teel, mida tagastatakse <code>write ##class(isc.py.Callout).GetLib()<\/code>. <\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"windows\">Windows<\/h3>\n<p><\/p>\n<ol>\n<li>Veenduge, et keskkonnamuutuja <code>PYTHONHOME<\/code> osutab Python 3.6.7-le.<\/li>\n<li>Veenduge, et s\u00fcsteemi keskkonnamuutuja <code>PATH<\/code> sisaldab muutujat <code>PYTHONHOME<\/code> (v\u00f5i katalooge, millele see osutab).<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"linux-debianubuntu\">Linux (Debian\/Ubuntu)<\/h3>\n<p><\/p>\n<ol>\n<li>Kontrollige, et keskkonnamuutuja <code>PATH<\/code> sisaldab <code>\/usr\/lib<\/code> ja <code>\/usr\/lib\/x86_64-linux-gnu<\/code>. Kasutage faili <code>\/etc\/environment<\/code> keskkonnamuutujate seadistamiseks.<\/li>\n<li>Vigade korral <code>undefined symbol: _Py_TrueStruct<\/code> seadke parameeter <code>PythonLib<\/code>. Samuti on <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\">Readme<\/a><\/noindex> jaotises T\u00f5rkeotsing.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"mac\">Mac<\/h3>\n<p><\/p>\n<ol>\n<li>Praegu toetatakse ainult Python 3.6.7 versiooni aadressilt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.python.org\/downloads\/release\/python-367\/\">Python.org<\/a><\/noindex>. Kontrollige muutujat <code>PATH<\/code>.<\/li>\n<\/ol>\n<p><\/p>\n<p>Kui olete muutnud keskkonnamuutujate v\u00e4\u00e4rtusi, k\u00e4ivitage oma InterSystems toode uuesti.<\/p>\n<p><\/p>\n<h2 id=\"docker\">Docker<\/h2>\n<p><\/p>\n<p>Konteinerite kasutamine pakub mitmeid eeliseid: <\/p>\n<p><\/p>\n<ul>\n<li>\u00dcksus<\/li>\n<li>T\u00f5husus<\/li>\n<li>Isolatsioon<\/li>\n<li>Kerged<\/li>\n<li>Muuda<\/li>\n<\/ul>\n<p><\/p>\n<p>Tutvuge selle <noindex><a rel=\"nofollow\" href=\"https:\/\/community.intersystems.com\/post\/continuous-delivery-your-intersystems-solution-using-gitlab-part-v-why-containers\">artiklite sarjaga<\/a><\/noindex> detaile saamiseks Docker'i kasutamisest InterSystems toodetega. <\/p>\n<p><\/p>\n<p>K\u00f5ik Python Gateway ehitused p\u00f5hinevad praegu konteineritel. <code>2019.4<\/code>.<\/p>\n<p><\/p>\n<h3 id=\"gotovyy-obraz\">Valmis pilt<\/h3>\n<p><\/p>\n<p>K\u00e4itage: <code>docker run -d -p 52773:52773 --name irispy intersystemscommunity\/irispy-community:latest<\/code>, et laadida ja k\u00e4ivitada Python Gateway InterSystems IRIS Community Editioni koosseisus. Nii ongi.<\/p>\n<p><\/p>\n<h3 id=\"sozdayte-svoy-sobstvennyy-obraz\">Looge oma oma pilt<\/h3>\n<p><\/p>\n<p>Docker pildi ehitamiseks k\u00e4ivitage juurkataloogis: <code>docker build --force-rm --tag intersystemscommunity\/irispy:latest .<\/code>.<br \/>\nVaikimisi koostis luuakse pildi p\u00f5hjal <code>store\/intersystems\/iris-community:2019.4.0.383.0<\/code>, kuid saate seda muuta, seadistades muutuja <code>IMAGE<\/code>.<br \/>\n\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 InterSystems IRIS \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435: `docker build &#8212;build-arg IMAGE=store\/intersystems\/iris:2019.4.0.383.0 &#8212;force-rm &#8212;tag intersystemscommunity\/irispy:latest &#171;.<\/p>\n<p><\/p>\n<p>P\u00e4rast seda saate k\u00e4ivitada Docker-pildi:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">docker run -d \n  -p 52773:52773 \n  -v \/\/:\/mount \n  --name irispy \n  intersystemscommunity\/irispy:latest \n  --key \/mount\/iris.key<\/code><\/pre>\n<p><\/p>\n<p>Kui kasutate InterSystems IRIS Community Edition'i p\u00f5hjal loodud pilti, ei pruugi te v\u00f5tit m\u00e4\u00e4rata.<\/p>\n<p><\/p>\n<h3 id=\"kommentarii\">Kommentaarid<\/h3>\n<p><\/p>\n<ul>\n<li>Testimisprotsess <code>isc.py.test.Process<\/code> salvestab mitmeid pilte ajutisse katalooge. V\u00f5ib-olla soovite muuta selle tee monteeritud kataloogiks. Selleks muutke seade <code>WorkingDir<\/code> n\u00e4idates monteeritud katalooge.<\/li>\n<li>Terminali juurde p\u00e4\u00e4semiseks kasutage: <code>docker exec -it irispy sh<\/code>.<\/li>\n<li>Juurdep\u00e4\u00e4s S\u00fcsteemi Halduse Portaalile logi kaudu <code>SuperUser<\/code>\/<code>SYS<\/code>.<\/li>\n<li>Konteinri peatamiseks kasutage: <code>docker stop irispy &amp;&amp; docker rm --force irispy<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"proverka-ustanovki\">Installatsiooni kontroll<\/h2>\n<p><\/p>\n<p>P\u00e4rast Python Gateway installimist on m\u00f5istlik kontrollida, et see t\u00f6\u00f6tab. K\u00e4ivitage see kood InterSystems IRIS terminalis:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set sc = ##class(isc.py.Callout).Setup() \nset sc = ##class(isc.py.Main).SimpleString(&quot;x='HELLO'&quot;, &quot;x&quot;, , .var).\nwrite var<\/code><\/pre>\n<p><\/p>\n<p>Tulemus peab olema v\u00e4ljundis <code>Tere<\/code> \u2014 Pythoni muutuja v\u00e4\u00e4rtus <code>x<\/code>. Kui tagastatud staatuse <code>sc<\/code> on viga v\u00f5i <code>var<\/code> on t\u00fchi, kontrollige <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\">Readme \u2014 t\u00f5rkeotsingu jaotis<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h1 id=\"api\">API<\/h1>\n<p><\/p>\n<p>Python Gateway on paigaldatud ja teil on kinnituseks, et see t\u00f6\u00f6tab. On aeg alustamiseks!<br \/>\nPeamine liides Pythonile on <code>isc.py.Main<\/code>. See pakub j\u00e4rgmisi meetodigruppide (k\u00f5ik tagastavad <code>%Status<\/code>):<\/p>\n<p><\/p>\n<ul>\n<li>Koodi t\u00e4itmine<\/li>\n<li>Andmete edastamine<\/li>\n<li>Abiprogrammid<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"ispolnenie-koda\">Koodi t\u00e4itmine<\/h2>\n<p><\/p>\n<p>Need meetodid v\u00f5imaldavad t\u00e4ita suvalist Python koodi.<\/p>\n<p><\/p>\n<h3 id=\"simplestring\">SimpleString<\/h3>\n<p><\/p>\n<p><code>SimpleString<\/code> \u2014 see on p\u00f5hi meetod. See v\u00f5tab 4 valikulist argumenti:<\/p>\n<p><\/p>\n<ul>\n<li><code>code<\/code> \u2014 t\u00e4idetav koodirida. Rida vahetusm\u00e4rk: <code>$c(10)<\/code>.<\/li>\n<li><code>returnVariable<\/code> \u2014 muutuja nimi, mis tagastatakse.<\/li>\n<li><code>serialiseerimise<\/code> \u2014 kuidas serialiseerida <code>returnVariable<\/code>. 0 \u2014 string (vaikimisi), 1 \u2014 repr.<\/li>\n<li><code>tulemus<\/code> \u2014 ByRef viide muutuja, kuhu v\u00e4\u00e4rtus salvestatakse <code>returnVariable<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<p>\u00dclal me t\u00e4itsime:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set sc = ##class(isc.py.Main).SimpleString(&quot;x='HELLO'&quot;, &quot;x&quot;, , .var).<\/code><\/pre>\n<p><\/p>\n<p>Selles n\u00e4ites m\u00e4\u00e4rame Pythoni muutuja <code>x<\/code> v\u00e4\u00e4rtus <code>Tere<\/code> ja soovime tagastada Python'i muutuja <code>x<\/code> ObjectScript muutuja <code>var<\/code>.<\/p>\n<p><\/p>\n<h3 id=\"executecode\">ExecuteCode<\/h3>\n<p><\/p>\n<p>ExecuteCode on turvalisem ja v\u00e4hem piiratud alternatiiv <code>SimpleString<\/code>.<br \/>\nInterSystems IRIS platvormil on stringid piiratud 3 641 144 m\u00e4rgiga, ning kui soovite k\u00e4ivitada pikema koodi, peate kasutama vooge.<br \/>\nV\u00f5etakse vastu kaks argumenti:<\/p>\n<p><\/p>\n<ul>\n<li><code>code<\/code> \u2014 string v\u00f5i Python koodivoog t\u00e4itmiseks.<\/li>\n<li><code>variable<\/code> \u2014 (valikuline) m\u00e4\u00e4rab tulemuse <code>code<\/code> selle Python muutuja.<\/li>\n<\/ul>\n<p><\/p>\n<p>Kasutamine:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set sc = ##class(isc.py.Main).ExecuteCode(&quot;2*3&quot;, &quot;y&quot;).<\/code><\/pre>\n<p><\/p>\n<p>Selles n\u00e4ites korrutame 2 ja 3 ning salvestame tulemuse Python muutuja. <code>y<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"peredacha-dannyh\">Andmete edastamine<\/h2>\n<p><\/p>\n<p>Edastage andmeid Pythonisse ja tagasi.<\/p>\n<p><\/p>\n<h3 id=\"python---intersystems-iris\">Python -&gt; InterSystems IRIS<\/h3>\n<p><\/p>\n<p>InterSystems IRIS-is on 4 viisi, kuidas saada Python muutuja v\u00e4\u00e4rtus, olenevalt vajatust serialiseerimisest:<\/p>\n<p><\/p>\n<ul>\n<li><code>String<\/code> lihtsate andmet\u00fc\u00fcpide ja silumise jaoks.<\/li>\n<li><code>Repr<\/code> lihtsate objektide hoidmiseks ja silumise jaoks.<\/li>\n<li><code>JSON<\/code> andmete lihtsaks k\u00e4sitlemiseks InterSystems IRIS pool.<\/li>\n<li><code>Pickle<\/code> objektide salvestamiseks.<\/li>\n<\/ul>\n<p><\/p>\n<p>Need meetodid v\u00f5imaldavad saada muutujaid Pythonist stringidena v\u00f5i voogudena.<\/p>\n<p><\/p>\n<ul>\n<li><code>GetVariable(variable, serialization, .stream, useString)<\/code> \u2014 saada <code>serialiseerimise<\/code> muutuja <code>variable<\/code> \u00fches <code>stream<\/code>. Kui <code>useString<\/code> kui 1 ja serialiseerimine asetatakse stringi, siis tagastatakse string, mitte voog.<\/li>\n<li><code>GetVariableJson(variable, .stream, useString)<\/code> \u2014 saada muutuja JSON serialiseerimine.<\/li>\n<li><code>GetVariablePickle(variable, .stream, useString, useDill)<\/code> \u2014 saada Pickle (v\u00f5i Dill) serialiseerimine muutuja.<\/li>\n<\/ul>\n<p><\/p>\n<p>P\u00fc\u00fcame saada meie muutuja <code>y<\/code>.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set sc = ##class(isc.py.Main).GetVariable(&quot;y&quot;, , .val, 1)\nwrite val\n&gt;6<\/code><\/pre>\n<p><\/p>\n<h3 id=\"intersystems-iris---python\">InterSystems IRIS -&gt; Python<\/h3>\n<p><\/p>\n<p>Laadime andmeid InterSystems IRIS-ist Pythonisse.<\/p>\n<p><\/p>\n<ul>\n<li><code>ExecuteQuery(query, variable, type, namespace)<\/code> \u2014 loob andmeseti (pandas <code>dataframe<\/code> v\u00f5i <code>loend<\/code>) SQL p\u00e4ringu p\u00f5hjal ja seob selle Python muutuja k\u00fclge <code>variable<\/code>. Pakett <code>isc.py<\/code> peab olema ulatuses <code>namespace<\/code> \u2014 seal k\u00e4ivitatakse p\u00e4ring.<\/li>\n<li><code>ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)<\/code> \u2014 laadib globaalset andmestikku <code>globaalne<\/code> alates alamskripti <code>start<\/code> kuni <code>l\u00f5pp<\/code> Pythonisse muutuja t\u00fc\u00fcbina <code>type<\/code>: <code>loend<\/code>, v\u00f5i pandas <code>dataframe<\/code>. Valikargumendide kirjeldus <code>mask<\/code> ja <code>labels<\/code> on saadaval klassi dokumentatsioonis ja repos <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/blob\/master\/DataTransfer.md\">Andmete \u00fclekande dokumendid<\/a><\/noindex>.<\/li>\n<li><code>ExecuteClass(class, variable, type, start, end, properties, namespace)<\/code> \u2014 laadib klassi andmeid <code>class<\/code> ID-lt <code>start<\/code> kuni <code>l\u00f5pp<\/code> Pythonisse muutuja t\u00fc\u00fcbina <code>type<\/code>: <code>loend<\/code>, v\u00f5i pandas <code>dataframe<\/code>. <code>properties<\/code> \u2014 omaduste loend (eraldaja \u2013 koma), mis tuleb laadida andmesetti. Toetatakse maske <code>*<\/code> ja <code>?<\/code>. Vaikimisi \u2014 <code>*<\/code> (k\u00f5ik omadused). Omadust <code>%%CLASSNAME<\/code> ei arvestata.<\/li>\n<li><code>ExecuteTable(table, variable, type, start, end, properties, namespace)<\/code> \u2014 laadib tabeli andmed <code>tabel<\/code> ID-lt <code>start<\/code> kuni <code>l\u00f5pp<\/code> Pythonisse.<\/li>\n<\/ul>\n<p><\/p>\n<p><code>ExecuteQuery<\/code> \u2014 universaalne (igal kehtival SQL-p\u00e4ringul on lubatud edastada Pythonisse). Kuid <code>ExecuteGlobal<\/code> ja selle \u00fcmbrikud <code>ExecuteClass<\/code> ja <code>ExecuteTable<\/code> t\u00f6\u00f6tavad teatud piirangutega. Need on palju kiirem (3-5 korda kiirem ODBC draiveritest ja 20 korda kiirem <code>ExecuteQuery<\/code>). T\u00e4iendav teave on <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/blob\/master\/DataTransfer.md\">Andmete \u00fclekande dokumendid<\/a><\/noindex>.<br \/>\nK\u00f5ik need meetodid toetavad andmete edastamist mis tahes piirkonnast. Pakett <code>isc.py<\/code> peab olema sihtpiirkonnas k\u00e4ttesaadav.<\/p>\n<p><\/p>\n<h3 id=\"executequery\">ExecuteQuery<\/h3>\n<p><\/p>\n<p><code>ExecuteQuery(request, variable, type, namespace)<\/code> \u2014 edastamine tulemusi mis tahes regulaarse SQL-p\u00e4ringu puhul Pythonis. See on aeglasim andmete edastamise meetod. Kasutage seda, kui <code>ExecuteGlobal<\/code> ja selle m\u00e4hiseid pole saadaval.<\/p>\n<p><\/p>\n<p>Argumentide loetelu:<\/p>\n<p><\/p>\n<ul>\n<li><code>query<\/code> \u2014 sql p\u00e4ring.<\/li>\n<li><code>variable<\/code> \u2014 Python muutuja nimi, kuhu andmed kirjutatakse.<\/li>\n<li><code>type<\/code> \u2014 <code>loend<\/code> v\u00f5i Pandas <code>dataframe<\/code>.<\/li>\n<li><code>namespace<\/code> \u2014 piirkond, milles p\u00e4ringut t\u00e4idetakse.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"executeglobal\">ExecuteGlobal<\/h3>\n<p><\/p>\n<p><code>ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)<\/code> \u2014 globaali edastamine Pythonis.<\/p>\n<p><\/p>\n<p>Argumentide loetelu:<\/p>\n<p><\/p>\n<ul>\n<li><code>globaalne<\/code> \u2014 globaali nimi ilma <code>^<\/code><\/li>\n<li><code>variable<\/code> \u2014 Python muutuja nimi, kuhu andmed kirjutatakse.<\/li>\n<li><code>type<\/code> \u2014 <code>loend<\/code> v\u00f5i Pandas <code>dataframe<\/code>.<\/li>\n<li><code>start<\/code> \u2014 globaalide esimene alam-skript. Kohustuslik <code>%Integer<\/code>.<\/li>\n<li><code>l\u00f5pp<\/code> \u2014 globaalide viimane alam-skript. Kohustuslik <code>%Integer<\/code>.<\/li>\n<li><code>mask<\/code> \u2014 globaalide v\u00e4\u00e4rtuste mask. Mask v\u00f5ib olla l\u00fchem kui globaalide v\u00e4ljade arv (sellisel juhul j\u00e4tetakse l\u00f5pu pooled v\u00e4lja). Kuidas maski vormindada:\n<ul>\n<li><code>+<\/code> edasta v\u00e4\u00e4rtus nii nagu see on.<\/li>\n<li><code>-<\/code> j\u00e4ta v\u00e4\u00e4rtus vahele.<\/li>\n<li><code>b<\/code> \u2014 Loogiline t\u00fc\u00fcp (<code>0<\/code> \u2014 <code>False<\/code>, k\u00f5ik muu \u2014 <code>True<\/code>).<\/li>\n<li><code>d<\/code> \u2014 Kuup\u00e4ev (alates $horolog, Windowsis alates 1970, Linuxis alates 1900).<\/li>\n<li><code>t<\/code> \u2014 Aeg ($horolog, sekundid p\u00e4rast kesk\u00f6\u00f6d).<\/li>\n<li><code>m<\/code> \u2014 Aja temp (aasta-kuud-p\u00e4ev tund:minut:sekund formaadi string).<\/li>\n<\/ul>\n<\/li>\n<li><code>labels<\/code> \u2014 %Loend veergude nimed. Esimene element \u2014 alam-skripti nimi.<\/li>\n<li><code>namespace<\/code> \u2014 piirkond, milles p\u00e4ringut t\u00e4idetakse.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"executeclass\">ExecuteClass<\/h3>\n<p><\/p>\n<p>M\u00e4his \u00fcle <code>ExecuteGlobal<\/code>. Valiku klassi m\u00e4\u00e4ratlemisel valmistab ette v\u00e4ljakutse <code>ExecuteGlobal<\/code> ja kutsub selle v\u00e4lja.<\/p>\n<p><\/p>\n<p><code>ExecuteClass(class, variable, type, start, end, properties, namespace)<\/code> \u2014 klassi andmete edastamine Pythonis.<\/p>\n<p><\/p>\n<p>Argumentide loetelu:<\/p>\n<p><\/p>\n<ul>\n<li><code>class<\/code> \u2014 klassi nimi<\/li>\n<li><code>variable<\/code> \u2014 Python muutuja nimi, kuhu andmed kirjutatakse.<\/li>\n<li><code>type<\/code> \u2014 <code>loend<\/code> v\u00f5i Pandas <code>dataframe<\/code>.<\/li>\n<li><code>start<\/code> \u2014 algne Id.<\/li>\n<li><code>l\u00f5pp<\/code> \u2014 l\u00f5pp Id<\/li>\n<li><code>properties<\/code> \u2014 omaduste loend (eraldaja \u2013 koma), mis tuleb laadida andmesetti. Toetatakse maske <code>*<\/code> ja <code>?<\/code>. Vaikimisi \u2014 <code>*<\/code> (k\u00f5ik omadused). Omadust <code>%%CLASSNAME<\/code> ei arvestata.<\/li>\n<li><code>namespace<\/code> \u2014 piirkond, milles p\u00e4ringut t\u00e4idetakse.<\/li>\n<\/ul>\n<p><\/p>\n<p>K\u00f5ik atribuudi v\u00e4\u00e4rtused edastatakse sellistena nagu nad on, v\u00e4lja arvatud t\u00fc\u00fcbid <code>%Date<\/code>, <code>%Time<\/code>, <code>%Boolean<\/code> ja <code>%TimeStamp<\/code> \u2014 need konverteeritakse vastavatesse Python klassidesse.<\/p>\n<p><\/p>\n<h3 id=\"executetable\">ExecuteTable<\/h3>\n<p><\/p>\n<p>M\u00e4his \u00fcle <code>ExecuteClass<\/code>. T\u00f5lgib tabeli nime klassi nimeks ja kutsub selle v\u00e4lja <code>ExecuteClass<\/code>. Signatuur:<\/p>\n<p><\/p>\n<p><code>ExecuteTable(table, variable, type, start, end, properties, namespace)<\/code> \u2014 tabeli andmete edastamine Pythonis.<\/p>\n<p><\/p>\n<p>Argumentide loetelu:<\/p>\n<p><\/p>\n<ul>\n<li><code>tabel<\/code> \u2014 tabeli nimi.<br \/>\nK\u00f5ik muud argumendid edastatakse sellistena nagu nad on <code>ExecuteClass<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"zametki\">M\u00e4rkmed<\/h3>\n<p><\/p>\n<ul>\n<li><code>ExecuteGlobal<\/code>, <code>ExecuteClass<\/code> ja <code>ExecuteTable<\/code> t\u00f6\u00f6tab sama kiiresti.<\/li>\n<li><code>ExecuteGlobal<\/code> 20 korda kiiremini kui <code>ExecuteQuery<\/code> suurtel andmekogudel (edastusaeg &gt; 0.01 sekundit).<\/li>\n<li><code>ExecuteGlobal<\/code>, <code>ExecuteClass<\/code> ja <code>ExecuteTable<\/code> t\u00f6\u00f6tavad globaalide puhul, millel on j\u00e4rgmine struktuur: <code>^global(key) = $lb(prop1, prop2, ..., propN)<\/code> kus <code>key<\/code> \u2014 t\u00e4isarv.<\/li>\n<li>Kuna <code>ExecuteGlobal<\/code>, <code>ExecuteClass<\/code> ja <code>ExecuteTable<\/code> toetatud v\u00e4\u00e4rtuste vahemik <code>%Date<\/code> vastab vahemikule <code>mktime<\/code> ja s\u00f5ltub OS-ist (<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/cpp\/c-runtime-library\/reference\/mktime-mktime32-mktime64?view=vs-2019\">windows<\/a><\/noindex>: 1970-01-01, <noindex><a rel=\"nofollow\" href=\"https:\/\/linux.die.net\/man\/3\/mktime\">linux<\/a><\/noindex> 1900-01-01, <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.apple.com\/library\/archive\/documentation\/System\/Conceptual\/ManPages_iPhoneOS\/man3\/mktime.3.html\">mac<\/a><\/noindex>). Kasutage <code>%TimeStamp<\/code>selle vahemiku v\u00e4ljaspool andmete edastamiseks v\u00f5i kasutage pandas dataframe'i, kuna see piirang kehtib ainult nimekirja kohta.<\/li>\n<li>Kuna <code>ExecuteGlobal<\/code>, <code>ExecuteClass<\/code> ja <code>ExecuteTable<\/code> K\u00f5ik argumendid, v\u00e4lja arvatud andmeallikas (globaal, klass v\u00f5i tabel) ja muutuja, on valikulised.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"primery\">N\u00e4ited<\/h2>\n<p><\/p>\n<p>Testklass <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/blob\/master\/isc\/py\/test\/Person.cls\">isc.py.test.Person<\/a><\/noindex> sisaldab meetodit, mis demonstreerib k\u00f5iki andmete edastamise variante:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">set global = &quot;isc.py.test.PersonD&quot;\nset class = &quot;isc.py.test.Person&quot;\nset table = &quot;isc_py_test.Person&quot;\nset query = &quot;SELECT * FROM isc_py_test.Person&quot;\n\n\/\/ \u041e\u0431\u0449\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b\nset variable = &quot;df&quot;\nset type = &quot;dataframe&quot;\nset start = 1\nset end = $g(^isc.py.test.PersonD, start)\n\n\/\/ \u0421\u043f\u043e\u0441\u043e\u0431 0: ExecuteGlobal \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432\nset sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)\n\n\/\/ \u0421\u043f\u043e\u0441\u043e\u0431 1: ExecuteGlobal \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438    \n\/\/ \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e\n\/\/ globalKey - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u0431\u0441\u0442\u043a\u0440\u0438\u043f\u0442\u0430 \nset labels = $lb(&quot;globalKey&quot;, &quot;Name&quot;, &quot;DOB&quot;, &quot;TS&quot;, &quot;RandomTime&quot;, &quot;AgeYears&quot;, &quot;AgeDecimal&quot;, &quot;AgeDouble&quot;, &quot;Bool&quot;)\n\n\/\/ mask \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430 1 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c labels \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e &quot;globalKey&quot; - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u0431\u0441\u043a\u0438\u043f\u0442\u0430\n\/\/ \u041f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c %%CLASSNAME\nset mask = &quot;-+dmt+++b&quot;\n\nset sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)\n\n\/\/ \u0421\u043f\u043e\u0441\u043e\u0431 2: ExecuteClass\nset sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)\n\n\/\/ \u0421\u043f\u043e\u0441\u043e\u0431 3: ExecuteTable\nset sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)\n\n\/\/ \u0421\u043f\u043e\u0441\u043e\u0431 4: ExecuteTable\nset sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)<\/code><\/pre>\n<p><\/p>\n<p>Kutsuge meetod <code>do ##class(isc.py.test.Person).Test()<\/code> n\u00e4ha, kuidas k\u00f5ik andmeedastusmeetodid t\u00f6\u00f6tavad.<\/p>\n<p><\/p>\n<h2 id=\"vspomogatelnye-metody\">Abimeetodid<\/h2>\n<p><\/p>\n<ul>\n<li><code>GetVariableInfo(variable, serialization, .defined, .type, .length)<\/code> \u2014 saada teavet muutujast: kas see on m\u00e4\u00e4ratletud, klass ja serialiseerimise pikkus.<\/li>\n<li><code>GetVariableDefined(variable, .defined)<\/code> \u2014 kas muutuja on m\u00e4\u00e4ratletud.<\/li>\n<li><code>GetVariableType(variable, .type)<\/code> \u2014 saada muutujaklass.<\/li>\n<li><code>GetStatus()<\/code> \u2014 saada ja eemaldada viimane erand Pythonis.<\/li>\n<li><code>GetModuleInfo(module, .imported, .alias)<\/code> \u2014 saada mooduli muutujat ja impordi staatust.<\/li>\n<li><code>GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)<\/code> \u2014 saada funktsiooni teavet.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"interoperabelnost\">Interoperatiivsuse<\/h1>\n<p><\/p>\n<p>Olete \u00f5ppinud kutsuma Python Gateway'd terminalist, n\u00fc\u00fcd alustame selle kasutamist tootmises. Koostoime Pythoniga sellises re\u017eiimis p\u00f5hineb <code>isc.py.ens.Operation<\/code>. See v\u00f5imaldab meil:<\/p>\n<p><\/p>\n<ul>\n<li>T\u00e4itma koodi Pythonis<\/li>\n<li>Salvestama\/taastama Python konteksti<\/li>\n<li>Laadida ja saada andmeid Pythonist<\/li>\n<\/ul>\n<p><\/p>\n<p>P\u00f5him\u00f5tteliselt on Python operatsioon see, mis katab <code>isc.py.Main<\/code>. Operatsioon <code>isc.py.ens.Operation<\/code> annab v\u00f5imaluse suhelda Python protsessiga InterSystems IRISi tootmisest. Toetatakse viit p\u00e4ringut:<\/p>\n<p><\/p>\n<ul>\n<li><code>isc.py.msg.ExecutionRequest<\/code> Python koodi t\u00e4itmiseks. Tagastab <code>isc.py.msg.ExecutionResponse<\/code> t\u00e4itmise tulemuse ja k\u00fcsitud muutujate v\u00e4\u00e4rtused.<\/li>\n<li><code>isc.py.msg.StreamExecutionRequest<\/code> Python koodi t\u00e4itmiseks. Tagastab <code>isc.py.msg.StreamExecutionResponse<\/code> t\u00e4itmise tulemuse ja k\u00fcsitud muutujate v\u00e4\u00e4rtused. Analoog <code>isc.py.msg.ExecutionRequest<\/code>, kuid v\u00f5tab ja tagastab vooge stringide asemel.<\/li>\n<li><code>isc.py.msg.QueryRequest<\/code> SQL p\u00e4ringu t\u00e4itmise tulemuse edastamiseks. Tagastab <code>Ens.Response<\/code>.<\/li>\n<li><code>isc.py.msg.GlobalRequest<\/code>\/<code>isc.py.msg.ClassRequest<\/code>\/<code>isc.py.msg.TableRequest<\/code> andmete edastamiseks globaalsetele \/ klassidele \/ tabelitele. Tagastab <code>Ens.Response<\/code>.<\/li>\n<li><code>isc.py.msg.SaveRequest<\/code> Python konteksti salvestamiseks. Tagastab <code>Ens.StringResponse<\/code> koos konteksti tuvastajaga.<\/li>\n<li>\n<p><code>isc.py.msg.RestoreRequest<\/code> Python konteksti taastamiseks.<\/p>\n<p><\/p>\n<p>Lisaks toetab <code>isc.py.ens.Operation<\/code> on kaks seadistust:<\/p>\n<p><\/p>\n<ul>\n<li><code>Initializer<\/code> \u2014 klassi valik, mis realiseerib liidest <code>isc.py.init.Abstract<\/code>. Seda saab kasutada funktsioonide, moodulite, klasside jne laadimiseks. Seda t\u00e4idetakse vaid \u00fcks kord protsessi k\u00e4ivitamisel.<\/li>\n<li><code>PythonLib<\/code> \u2014 (ainult Linuxi jaoks) kui n\u00e4ete laadimise ajal vigu, seadke selle v\u00e4\u00e4rtus <code>libpython3.6m.so<\/code> v\u00f5i isegi Python teegile t\u00e4is tee. <\/li>\n<\/ul>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"sozdanie-biznes-processov\">\u00c4riprosesside loomine<\/h2>\n<p><\/p>\n<p>On olemas kaks klassi, mis lihtsustavad \u00e4riprotsesside arendamist:<\/p>\n<p><\/p>\n<ul>\n<li><code>isc.py.ens.ProcessUtils<\/code> v\u00f5imaldab v\u00e4lja t\u00f5mmata annotatsioone tegevustest muutuja asendamisega.<\/li>\n<li><code>isc.py.util.BPEmulator<\/code> v\u00f5imaldab h\u00f5lpsasti testida \u00e4riprotsesse Pythoniga. See suudab k\u00e4ivitada \u00e4riprotsessi (osad Python keeles) k\u00e4imasolevas protsessis.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"podstanovka-peremennyh\">Muudatuste asendamine<\/h2>\n<p><\/p>\n<p>K\u00f5ik \u00e4riprotsessid, mis p\u00e4rinevad <code>isc.py.ens.ProcessUtils<\/code>, saavad kasutada meetodit <code>GetAnnotation(name)<\/code> aktiivsuse annotatsiooni v\u00e4\u00e4rtuse saamiseks tema nimetuse j\u00e4rgi. Aktiivsuse annotatsioon v\u00f5ib sisaldada muutujaid, mis arvutatakse InterSystems IRIS'i pool enne edastamist Pythonisse. Siin on muutuja asendamise s\u00fcntaks:<\/p>\n<p><\/p>\n<ul>\n<li><code>${class:method:arg1:...:argN}<\/code> \u2014 meetodi v\u00e4ljakutse<\/li>\n<li><code>#{expr}<\/code> \u2014 koodi t\u00e4itmine ObjectScripti keeles.<\/li>\n<\/ul>\n<p><\/p>\n<p>N\u00e4idis on saadaval testimisprotsessis <code>isc.py.test.Process<\/code>, n\u00e4iteks aktiivsuses <code>Korrelatsioonimatrix: Graaf<\/code>: <code>f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png')<\/code>. Selles n\u00e4ites:<\/p>\n<p><\/p>\n<ul>\n<li><code>#{process.WorkDirectory}<\/code> tagastab objekti WorkDirectory omaduse <code>process<\/code>n\u00e4iteks praeguse \u00e4riprotsessi. <code>isc.py.test.Process<\/code> ${%PopulateUtils:Integer:1:100}<\/li>\n<li><code>${%PopulateUtils:Integer:1:100}<\/code> kutsub v\u00e4lja meetodi <code>Integer<\/code> klass <code>%PopulateUtils<\/code>, edastades argumendid <code>1<\/code> ja <code>100<\/code>, tagastades juhusliku t\u00e4isarvu vahemikus <code>1...100<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"testovyy-biznes-process\">Testimisprotsess<\/h2>\n<p><\/p>\n<p>Testtooted ja testimisprotsess on vaikimisi saadaval Python Gateway'i osana. Nende kasutamiseks:<\/p>\n<p><\/p>\n<ol>\n<li>K\u00e4ivitage terminalis: <code>pip install pandas matplotlib seaborn<\/code>. <\/li>\n<li>InterSystems IRIS terminalis k\u00e4ivitage: <code>do ##class(isc.py.test.CannibalizationData).Import()<\/code> testandmete t\u00e4itmiseks.<\/li>\n<li>K\u00e4ivitage toode <code>isc.py.test.Production<\/code>.<\/li>\n<li>Saada p\u00e4ringut\u00fc\u00fcpi <code>Ens.Request<\/code> \u00fches <code>isc.py.test.Process<\/code>.<\/li>\n<\/ol>\n<p><\/p>\n<p>Vaadake, kuidas see k\u00f5ik koos t\u00f6\u00f6tab. Avage <code>isc.py.test.Process<\/code> BPL redigeerijas:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway InterSystems IRIS&#039;is\" src=\"\/wp-content\/uploads\/2020\/02\/6f83b22e0167e2699d285f3e32bfe373.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"ispolnenie-koda-1\">Koodi t\u00e4itmine<\/h3>\n<p><\/p>\n<p>K\u00f5ige olulisem v\u00e4ljakutse \u2014 Python koodi t\u00e4itmine:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway InterSystems IRIS&#039;is\" src=\"\/wp-content\/uploads\/2020\/02\/dafa6b8c878ae937b194ff577b86dc89.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kasutatakse p\u00e4ringut <code>isc.py.msg.ExecutionRequest<\/code>, siin on selle omadused:<\/p>\n<p><\/p>\n<ul>\n<li><code>Kood<\/code> \u2014 Pythoni kood.<\/li>\n<li><code>SeparateLines<\/code> \u2014 kas jagada kood ridadeks t\u00e4itmiseks. <code>$c(10)<\/code> (<code>n<\/code>) kasutatakse ridade eraldamiseks. Pange t\u00e4hele, et EI SOOVITATA tegeleda s\u00f5numiga korraga, see funktsioon on m\u00f5eldud ainult t\u00f6\u00f6tlemiseks <code>def<\/code> ja sarnaste mitmerealiste v\u00e4ljendite jaoks. Vaikimisi <code>0<\/code>.<\/li>\n<li><code>Muutujad<\/code> \u2014 komadega eraldatud muutujate loend, mis lisatakse vastusele.<\/li>\n<li><code>Serialization<\/code> \u2014 Kuidas serialiseerida muutujad, mille soovime tagasi anda. Valikud: <code>Str<\/code>, <code>Repr<\/code>, <code>JSON<\/code>, <code>Pickle<\/code> ja <code>Dill<\/code>, vaikimisi <code>Str<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<p>Meie juhul m\u00e4\u00e4rame ainult omaduse <code>Kood<\/code>, seega kasutavad k\u00f5ik teised omadused vaikeseadeid. M\u00e4\u00e4rame selle kutsumisega <code>process.GetAnnotation(&quot;Import pandas&quot;)<\/code>, mis jooksutamise ajal tagastab annotatsiooni p\u00e4rast muutujate asendamist. L\u00f5puks, kood <code>import pandas as pd<\/code> edastatakse Pythonile. <code>GetAnnotation<\/code> v\u00f5ib olla kasulik mitmerealiste Python skriptide saamiseks, kuid ei ole mingeid piiranguid selle meetodi kohta koodi saamisel. V\u00f5ite m\u00e4\u00e4rata omaduse <code>Kood<\/code> iga\u00fchel, kes teile sobib.<\/p>\n<p><\/p>\n<h3 id=\"poluchenie-peremennyh\">Muutujate saamine<\/h3>\n<p><\/p>\n<p>Veel \u00fcks huvitav v\u00e4ljakutse kasutades <code>isc.py.msg.ExecutionRequest<\/code> \u2014 <code>Correlation Matrix: Tabular<\/code>:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway InterSystems IRIS&#039;is\" src=\"\/wp-content\/uploads\/2020\/02\/8824e49ecaa448551c830e9a90eb5781.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>See on Pythonis korrelatsioonimatriitsi arvutamine ja muutuja v\u00e4lja t\u00f5mbamine <code>corrmat<\/code> InterSystems IRIS-i tagasi formatiseeritud JSON-i kujul, seadistades p\u00e4ringu omadused:<\/p>\n<p><\/p>\n<ul>\n<li><code>Muutujad<\/code>: <code>&quot;corrmat&quot;<\/code><\/li>\n<li><code>Serialization<\/code>: <code>&quot;JSON&quot;<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Me saame tulemusi n\u00e4ha Visual Trace'is:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway InterSystems IRIS&#039;is\" src=\"\/wp-content\/uploads\/2020\/02\/713bcade8cb1018f2974cba2cab712b7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja kui me seda v\u00e4\u00e4rtust vajame, saame selle k\u00e4tte nii: <code>callresponse.Variables.GetAt(&quot;corrmat&quot;)<\/code>.<\/p>\n<p><\/p>\n<h3 id=\"peredacha-dannyh-1\">Andmete edastamine<\/h3>\n<p><\/p>\n<p>J\u00e4rgnevalt r\u00e4\u00e4gime andmete edastamisest InterSystems IRIS-ist Pythonisse, k\u00f5ik andmete edastamise p\u00e4ringud rakendavad liidest <code>isc.py.msg.DataRequest<\/code>, mis pakub j\u00e4rgmisi omadusi:<\/p>\n<p><\/p>\n<ul>\n<li><code>Variable<\/code> \u2014 Python muutuja, kuhu kirjutatakse andmed.<\/li>\n<li><code>T\u00fc\u00fcp<\/code> \u2014 muutuja t\u00fc\u00fcp: <code>dataframe<\/code> (pandas dataframe) v\u00f5i <code>loend<\/code>.<\/li>\n<li><code>Namespaces<\/code> \u2014 ala, kust andmed saadakse. Pakett <code>isc.py<\/code> peab olema sellel alal kergesti ligip\u00e4\u00e4setav. See v\u00f5ib olla ala, mis ei toeta tooteid.<\/li>\n<\/ul>\n<p><\/p>\n<p>Selle liidese alusel on ellu viidud 4 p\u00e4ringu klassi:<\/p>\n<p><\/p>\n<ul>\n<li><code>isc.py.msg.QueryRequest<\/code> \u2014 seadke omadus <code>P\u00e4ring<\/code> SQL p\u00e4ringu edastamiseks.<\/li>\n<li><code>isc.py.msg.ClassRequest<\/code> \u2014 seadke omadus <code>Class<\/code> andmete klassi edastamiseks.<\/li>\n<li><code>isc.py.msg.TableRequest<\/code> \u2014 seadke omadus <code>Tabela<\/code> tabeli andmete edastamiseks.<\/li>\n<li><code>isc.py.msg.GlobalRequest<\/code> \u2014 seadke omadus <code>Global<\/code> globaalsete andmete edastamiseks.<\/li>\n<\/ul>\n<p><\/p>\n<p>Testimise protsessi k\u00e4igus vaadake aktiivsust <code>RAW<\/code>, kus <code>isc.py.msg.QueryRequest<\/code> n\u00e4idatud tegevuses.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway InterSystems IRIS&#039;is\" src=\"\/wp-content\/uploads\/2020\/02\/f6a2a520594341b9d37110bcd24b1015.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"sohranenievosstanovlenie-python-konteksta\">Python konteksti salvestamine \/ taastamine<\/h3>\n<p><\/p>\n<p>L\u00f5puks saame salvestada Python konteksti InterSystems IRIS-s, et seda teha, saadame <code>isc.py.msg.SaveRequest<\/code> argumendid:<\/p>\n<p><\/p>\n<ul>\n<li><code>Mask<\/code> \u2014 Salvestatakse ainult mustrile vastavad muutujad. Toetatud on <code>*<\/code> ja <code>?<\/code>. N\u00e4ide: <code>&quot;Data*, Figure?&quot;<\/code>. Vaikimisi <code>*<\/code>.<\/li>\n<li><code>MaxLength<\/code> \u2014 Salvestatava muutuja maksimaalne pikkus. Kui muutuja serialiseerimine \u00fcletab seda, j\u00e4etakse see t\u00e4helepanuta. Seadke 0, et lubada muutujaid mis tahes pikkuses. Vaikimisi <code>$$$MaxStringLength<\/code>.<\/li>\n<li><code>Nimi<\/code> \u2014 Konteksti nimi (valikuline).<\/li>\n<li><code>Kirjeldus<\/code> \u2014 Konteksti kirjeldus (valikuline).<\/li>\n<\/ul>\n<p><\/p>\n<p>Tagastab <code>Ens.StringResponse<\/code> koos <code>Id<\/code> salvestatud konteksti. Testimisprotsessi k\u00e4igus vaadake aktiivsust <code>Salvesta kontekst<\/code>.<\/p>\n<p><\/p>\n<p>Sobilik p\u00e4ring <code>isc.py.msg.RestoreRequest<\/code> laadib konteksti InterSystems IRIS-st Pythonisse:<\/p>\n<p><\/p>\n<ul>\n<li><code>ContextId<\/code> \u2014 konteksti identifikaator.<\/li>\n<li><code>Puhasta<\/code> \u2014 puhastada kontekst enne taastamist.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"jupyter-notebook\">Jupyter Notebook<\/h1>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/jupyter.org\/\">Jupyter Notebook<\/a><\/noindex> \u2014 see on avatud l\u00e4htekoodiga veebirakendus, mis v\u00f5imaldab luua m\u00e4rkmikke, mis sisaldavad koodi, visualiseerimisi ja teksti ning neid avaldada. Python Gateway v\u00f5imaldab vaadata ja redigeerida BPL-protsesse Jupyter Notebook'i kujul. Pange t\u00e4hele, et hetkel kasutatakse tavap\u00e4rast Python 3 executorit.<\/p>\n<p><\/p>\n<p>See laiendus eeldab, et annotatsioonid sisaldavad Python koodi ja kasutavad aktiivsuste nimesid eelnevate pealkirjadena. N\u00fc\u00fcd on v\u00f5imalik arendada \u00e4ri-protsesse PythonGateway Jupyter Notebookis. Siin on, mis on v\u00f5imalik: <\/p>\n<p><\/p>\n<ul>\n<li>Luua uusi \u00e4ri protsesse<\/li>\n<li>Kustutada \u00e4ri protsesse<\/li>\n<li>Luua uusi tegevusi<\/li>\n<li>Muuta tegevusi<\/li>\n<li>Kustutada tegevusi<\/li>\n<\/ul>\n<p><\/p>\n<p>Siin on <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/mZizgVtZ014\">demo-video<\/a><\/noindex>. Ja m\u00f5ned ekraanipildid:<\/p>\n<p><\/p>\n<h2 id=\"provodnik-processov\">Protsesside juhend<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway InterSystems IRIS&#039;is\" src=\"\/wp-content\/uploads\/2020\/02\/6da1aa0a026c34238c57f96e82742bb9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"redaktor-processa\">Protsessi redaktor<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Python Gateway InterSystems IRIS&#039;is\" src=\"\/wp-content\/uploads\/2020\/02\/651031fe9792cc1c5926aa386f4e37fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"ustanovka-1\">Installeerimine<\/h2>\n<p><\/p>\n<ol>\n<li>Teil on vaja InterSystems IRIS 2019.2+.<\/li>\n<li>Installige PythonGateway v0.8+ (n\u00f5utav ainult <code>isc.py.util.Jupyter<\/code>, <code>isc.py.util.JupyterCheckpoints<\/code> ja <code>isc.py.ens.ProcessUtils<\/code>).<\/li>\n<li>Uuendage ObjectScript koodi hoidlast.<\/li>\n<li>Sooritage <code>do ##class(isc.py.util.Jupyter).Install()<\/code> ja j\u00e4rgige juhiseid.<\/li>\n<\/ol>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/PythonGateway\/tree\/master\/jupyter\">Dokumentatsioon<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h1 id=\"vyvody\">J\u00e4reldused<\/h1>\n<p><\/p>\n<p>MLToolkit on t\u00f6\u00f6riistade komplekt, mille eesm\u00e4rk on \u00fchendada mudelid ja tehingute keskkond, et loodud mudeleid oleks lihtne kasutada otse teie \u00e4riprotsessides. Python Gateway on osa MLToolkit'ist ja pakub integreerimist Python'i keelega, v\u00f5imaldades orkestreerida mis tahes masin\u00f5ppe algoritme, mis on loodud Python'i keeles (peamine keskkond paljude andeteadlaste jaoks), kasutades mitmeid valmis raamatukogusid kiireks kohandatud, automatiseeritud anal\u00fc\u00fctiliste AI\/ML lahenduste loomiseks InterSystems IRIS platvormil.<\/p>\n<p><\/p>\n<h1 id=\"ssylki\">Lingid<\/h1>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/473452\/\">Eelmine artikkel<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/openexchange.intersystems.com\/package\/PythonGateway\">Python Gateway<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/openexchange.intersystems.com\/package\/Python-Gateway-Samples\">Python Gateway n\u00e4idised<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intersystems-community\/Convergent-Analytics\">Convergent-Analytics<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.python.org\/downloads\/release\/python-367\/\">Python 3.6.7 64 bit<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3.6\/tutorial\/index.html\">Dokumentatsioon ja kursused Python'i kohta<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"mltoolkit\">MLToolkit<\/h1>\n<p><\/p>\n<p>MLToolkit kasutajagrupp on privaatne GitHub-i reposteitor, mis on loodud osana InterSystems'i ettev\u00f5tte GitHub-organisatsioonist. See on suunatud v\u00e4listele kasutajatele, kes installivad, uurivad v\u00f5i juba kasutavad MLToolkit'i komponente, sealhulgas Python Gateway'd. Grupis on saadaval mitmeid rakendatud juhtumeid (koos l\u00e4htekoodi ja testandmetega) turunduse, tootmise, meditsiini ja paljude teiste valdkondade jaoks. ML Toolkit kasutajagruppi liitumiseks saatke palun l\u00fchike e-kiri j\u00e4rgmistel andmetel: <noindex><a rel=\"nofollow\" href=\"mailto:MLToolkit@intersystems.com?subject=MLToolkit%20user%20group&amp;body=Hello.%0A%0APlease%20add%20me%20to%20ML%20Toolkit%20user%20group%3A%0A%0A-%20GitHub%20username%3A%20%0A%0A-%20Name%3A%20%0A%0A-%20Company%3A%20%0A%0A-%20Position%3A%0A-%20Country%3A%20%0A%0A\">MLToolkit@intersystems.com<\/a><\/noindex> ja m\u00e4rkige oma kirjas j\u00e4rgmised andmed:<\/p>\n<p><\/p>\n<ul>\n<li>GitHubi kasutajanimi<\/li>\n<li>Organisatsioon (kus te t\u00f6\u00f6tate v\u00f5i \u00f5pite)<\/li>\n<li>\u0414\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c (\u0432\u0430\u0448\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0432\u0430\u0448\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0438\u043b\u0438 &quot;\u0421\u0442\u0443\u0434\u0435\u043d\u0442&quot;, \u0438\u043b\u0438 &quot;\u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439&quot;).<\/li>\n<li>Riik<\/li>\n<\/ul>\n<p><\/p>\n<p>Neile, kes lugesid artiklit ja on huvitatud InterSystems IRISi v\u00f5imalustest tehisintellekti ja masin\u00f5ppe mehhanismide arendamise v\u00f5i majutamise platvormina, pakume v\u00e4lja v\u00f5imalused arutada teie ettev\u00f5ttele huvi pakkuvaid stsenaariume. Oleme valmis anal\u00fc\u00fcsima teie ettev\u00f5tte vajadusi ja \u00fchiselt m\u00e4\u00e4rama tegevusplaani; meie AI\/ML ekspertgrupi kontaktmeiliaadress on <noindex><a rel=\"nofollow\" href=\"mailto:MLToolkit@intersystems.com\">MLToolkit@intersystems.com<\/a><\/noindex>.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/intersystems\/blog\/486984\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 Python Gateway \u2014 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438-\u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python (\u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 Data Scientists), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0445, \u0440\u043e\u0431\u043e\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 AI\/ML-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 InterSystems IRIS. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":41222,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-41221","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 Python Gateway \u2014 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438-\u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python (\u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 Data Scientists), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0445, \u0440\u043e\u0431\u043e\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 AI\/ML-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 InterSystems IRIS. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/python-gateway-v-intersystems-iris\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Python Gateway \u0432 InterSystems IRIS | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 Python Gateway \u2014 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438-\u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python (\u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 Data Scientists), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0445, \u0440\u043e\u0431\u043e\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 AI\/ML-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 InterSystems IRIS. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/python-gateway-v-intersystems-iris\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-06T17:42:46+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-06T17:42:46+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Python Gateway InterSystems IRISis | ProHoster","description":"See artikkel on p\u00fchendatud Python Gateway'le \u2014 avatud l\u00e4htekoodiga kogukonnaprojektile InterSystems IRIS andmeplatvormile. See projekt v\u00f5imaldab orkestreerida k\u00f5ik masin\u00f5ppe algoritmid, mis on loodud Pythonis (paljude andmete teadlaste peamine keskkond), kasutades arvukalt valmis raamatukogusid, et kiiresti luua kohandatavaid, automatiseeritud anal\u00fc\u00fctilisi AI\/ML-lahendusi InterSystems IRIS platvormil. Selles artiklis n\u00e4itan, kuidas","canonical_url":"https:\/\/prohoster.info\/et\/blog\/python-gateway-v-intersystems-iris","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Python Gateway \u0432 InterSystems IRIS | ProHoster","og:description":"\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 Python Gateway \u2014 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438-\u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 InterSystems IRIS. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python (\u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 Data Scientists), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0445, \u0440\u043e\u0431\u043e\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 AI\/ML-\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 InterSystems IRIS. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a","og:url":"https:\/\/prohoster.info\/et\/blog\/python-gateway-v-intersystems-iris","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-06T17:42:46+00:00","article:modified_time":"2020-02-06T17:42:46+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"41221","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:21:33","updated":"2022-09-30 00:32:37"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/41221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=41221"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/41221\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/41222"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=41221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=41221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=41221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}