Zalecenia dotyczące języka skryptowego lub wtyczki do kodowania użytkowników wysoce uzależnionych od matematyki? [zamknięte]

Rozpocząłem nagrodę za to pytanie

...bo naprawdę chcę wkład społeczności. Mogę (i mieć) spojrzał na kilka języków / RAM i myśleć " dobrze, to będzie pewnie działa dobrze , ale ja bym naprawdę doceniam porady, które są oparte specjalnie na problem, z którym się borykam, a zwłaszcza z każdy z doświadczeniem integrującym / korzystając z tego, co polecasz.


Pracuję nad oprogramowaniem do analizy naukowej. Informatyka dostarcza wiele narzędzi do matematycznej transformacji danych. Jedno narzędzie pozwala użytkownikowi wprowadzić własne równanie, które jest uruchamiane na zbiorze danych (duża macierz wartości 2D lub 3D) i oceniane.

To narzędzie ma graficzny edytor równań, który wewnętrznie buduje obiektowe drzewo wyrażeń z innym obiektem dla każdej operacji (na przykład byłaby instancja klasy Logarytm, która jest węzłem w drzewie do dodawania obliczania logarytmu o wartości wartość do bazy; ma dwoje dzieci, które są jego wejściami. Zrzut ekranu części:

Tutaj wpisz opis obrazka

Widać drzewo, które buduje po lewej stronie, i kilka z wielu (pięćdziesiąt?) potencjalne operacje w menu po prawej stronie.

To ma kilka wad:

  • edytor graficzny staje się niezgrabny dla złożonych równań
  • istnieją pewne operacje, które są trudne do przedstawienia graficznie, takie jak tworzenie dużych macierzy (jądro dla n x n na przykład)
  • pozwala tylko na równania: nie ma rozgałęzień ani innej logiki

Było schludne, gdy było znacznie prostsze, ale już nie, dla tego rodzaju rzeczy, które nasi użytkownicy chcą z nim robić. Gdybym to teraz napisał, zrobiłbym to zupełnie inaczej - i to jest moja szansa:)

Chciałbym dać użytkownikowi coś mocniejszego i pozwolić mu pisać kod-skrypt lub skompilowany-który może wykonywać znacznie bardziej zaawansowane operacje. jestem szukając porady SO, jakiej technologii należy użyć lub najlepszego podejścia do niej.

Reszta tego pytania jest dość długa-przepraszam. Próbowałem szczegółowo opisać problem. Z góry dzięki za przeczytanie:)

Ważne ograniczenia:

  • Nasza matematyka operuje na dużych macierzach. W powyższym równaniu V1 reprezentuje wejście (jedno z potencjalnie wielu) i jest 2D lub 3D, a każdy wymiar może być duży: na zamówienie tysięcy albo setki tysięcy. (Rzadko obliczamy to wszystko na raz, tylko plasterki / segmenty. Ale jeśli odpowiedź wiąże się z czymś, co wymaga gromadzenia danych, należy pamiętać, rozmiar i szybkość tego jest brana pod uwagę.)

  • Podane przez nas operacje pozwalają zapisać, powiedzmy, 2 x V, co mnoży każdy element w V przez 2. Rezultatem jest kolejna matryca o tej samej wielkości. Innymi słowy, język skryptowy lub programistyczny, który zawiera standardowe prymitywy matematyczne, nie jest wystarczy: musimy być w stanie kontrolować co prymitywy są dostępne, lub Jak są one realizowane.

    Operacje te mogą być złożone: Wejście Może być tak proste jak liczba (2, 5.3, pi) lub tak złożone jak macierz 1, 2 lub 3-wymiarowa, która zawiera liczbowe, Dane logiczne lub złożone (wartości sparowane). Moje obecne myślenie jest wystarczająco potężnym językiem, któremu możemy ujawnić nasze typy danych jako klasy i zaimplementować standard operatorzy. Prosty ewaluator nie wystarczy.

    • zamiast po prostu pisać operacje, które są ewaluowane iteracyjnie na jednym lub kilku wejściach w celu dostarczenia wyjścia, jak obecnie (co jest łatwo zaimplementowalne za pomocą ewaluatora wyrażeń), chciałbym, aby użytkownik mógł: dostarczać wyjścia o różnych rozmiarach do wejść; wywoływać inne funkcje; itp. W przypadku programu hosta przydatne byłoby pytanie kodu użytkownika, która część lub kawałek danych wejściowych będzie wymagana do ocenia wycinek lub część wyjścia. Myślę, że pokazanie jakiejś części naszych zajęć i używanie języka OO jest prawdopodobnie najlepszym sposobem na osiągnięcie tych punktów.
  • W 2011 roku firma Matlab wprowadziła do swojej oferty nowe oprogramowanie do programowania, które zostało opracowane przez firmę Matlab.]}

  • Używamy Embarcadero C++ Builder 2010 do rozwoju, z niewielkimi ilościami Delphi. Może to ograniczyć to, z czego możemy korzystać - to, że coś jest C++, powiedzmy, nie znaczy, że będzie działać, jeśli zostanie zakodowane tylko przeciwko VC++ lub GCC. Musi być również odpowiedni do użytku z oprogramowaniem komercyjnym.

  • Nasze oprogramowanie posiada obecnie interfejs COM, a część aplikacji może być zautomatyzowana, ponieważ nasza aplikacja jest poza procesowym serwerem COM. Możemy dodać interfejsy COM do niektórych wewnętrznych obiektów lub stworzyć drugi framework COM specjalnie do tego celu, jeśli jest to wymagane.

  • "narzędzia", w tym ten jest migrowany do wielowątkowego frameworka. Rozwiązanie końcowe musi być wykonane w dowolnym wątku i w wielu jego instancjach naraz . Może to mieć wpływ na środowisko uruchomieniowe języka hostowanego - Python 2.na przykład X ma blokadę globalną.

  • Byłoby wspaniale używać języka, który pochodzi z bibliotek do użytku matematycznego lub naukowego.

  • Kompatybilność wsteczna ze starym narzędziem wyrażenia nie jest ważna. To jest wersja 2: czyste konto!

Aktualne pomysły:

  • RemObjects Pascal Script i DWScript są językami łatwo bindowalnymi do klas pochodnych TObject. Nie wiem, czy można zapewnić operatorowi przeciążenie.
  • [24]}hostowanie środowiska wykonawczego.Net i ładowanie bibliotek DLL opartych na C# (powiedzmy) jako wtyczek. Podoba mi się ten pomysł: widziałem to, gdzie program host zapewnia zakreślacz składni, debugowanie itp. Domyślam się, że to był Ogromna ilość kodowania. Umożliwiłoby to również korzystanie z IronPython i F#.
    • RemObjects Hydra wygląda na ciekawy sposób osiągnięcia tego. Bezsprzecznie reklamuje się dla Delphi, a nie c++ Buildera; sprawdzam kompatybilność.
  • Hosting czegoś w rodzaju Pythona, który jest wykonalny z RAD Studio
  • zapewnienie interfejsu BPL i umożliwienie użytkownikom kodowania bezpośrednio przed naszym programem, jeśli kupują kopię Aby udostępnić interfejs wtyczki i wystawić klasy za pomocą interfejsów; może być konieczne skompilowanie wtyczek z kompatybilną binarnie wersją naszego IDE)
  • ...

Dzięki za wkład! Doceniam wszystkie odpowiedzi, nawet jeśli nie są do końca doskonałe - mogę badać, jestem po wskazówki, gdzie się udać ,i opinie (proszę, opinie z powodów zawartych w odpowiedzi :p) na temat tego, jak podejść do niego lub co może być odpowiednie. Każda odpowiedź, bez względu na to, jak krótka, będziemy wdzięczni. Ale jeśli polecisz coś w szczegółach, a nie tylko "używaj języka X", będę bardzo zainteresowany przeczytaniem tego :)

Pozdrawiam,

Dawid

Aktualizacje:

Dotychczas zalecono:

  • Python: 2.6 ma globalną blokadę, która brzmi jak zabójca gier. 3 (najwyraźniej) nie ma jeszcze szerokiego wsparcia ze strony użytecznych bibliotek. Brzmi dla mnie (i Wiem, że jestem outsiderem społeczności Pythona) jak fragmentacja trochę-czy jest to naprawdę bezpieczne w użyciu?

  • Lua: nie wydaje się być bezpośrednio OO, ale zapewnia "meta-mechanizmy implementacji funkcji, zamiast dostarczania wielu funkcji bezpośrednio w języku" . Brzmi to bardzo fajnie z punktu widzenia programisty, ale nie jest to skierowane do programistów, którzy chcą się bawić fajnymi rzeczami. Nie jestem pewien, jak dobrze by to działało, biorąc pod uwagę grupę docelową - myślę, że język, który zapewnia więcej podstaw wbudowanych byłby lepiej.

  • Ms script / ActiveScript. Udostępniamy już zewnętrzny interfejs COM, za pomocą którego nasi użytkownicy automatyzują nasze oprogramowanie, zwykle w języku VBScript. Chciałbym jednak bardziej wydajny (i, szczerze mówiąc, lepiej zaprojektowany) język niż VBS, a JScript też nie jest odpowiedni. Nie wiem też, jakie problemy mogą mieć dane na COM - mamy dużo danych, często bardzo konkretnie wpisanych, więc szybkość i utrzymanie tych typów są ważne.

  • Lisp: nawet nie pomyślałem o tym języku, ale wiem, że ma wielu fanów.

  • Hosting. Net plugins: nie wspominany przez nikogo. Czy to nie jest dobry pomysł? Dostajesz C#, F#, Python... Czy ma takie same problemy co COM? (Czy hosting CLR działa przez COM?)

Kilka wyjaśnień: przez "macierz" mam na myśli macierz w sensie zmiennej Matlab, czyli ogromną tabelę wartości-nie powiedzmy 4x4 macierz transformacji, jakiej można użyć w oprogramowaniu 3D. Są to dane zbierane w czasie, tysiące wartości często wiele razy na sekundę. Nie chodzi nam również o system algebry komputerowej, ale o coś, w czym użytkownicy mogą pisać pełne wtyczki i pisać własną matematykę-chociaż system mający zdolność do obsługi złożonej matematyki, jak system algebry komputerowej może, byłby przydatny. Wziąłbym "pełny język" zamiast "algebry", ale jeśli te dwa się nie mieszają, aby umożliwić złożone gałęzie / ścieżki w kodzie użytkownika, a także interfejs OO.

Author: Community, 2011-06-01

12 answers

Zgodnie z Twoimi potrzebami, oto kilka wskazówek:

  • rozróżnij język i bibliotekę - możesz mieć języki matematyczne (jak MATLAB) lub biblioteki matematyczne wywoływane z języka wysokiego poziomu (jak Python);
  • język (lub biblioteka) powinny być zaprojektowane przez matematyków, dla matematyków;
  • używany język powinien być już istniejącym (nie odkrywaj koła na nowo);
  • Powinieneś mieć możliwość współdzielenia zawartości skryptu z istniejącymi oprogramowanie;
  • nie powinieneś zaczynać tak dużego złożonego projektu (skryptów matematycznych) od zera.

Więc chyba można by zmniejszyć listę kandydatów:

  • JavaScript nie został zaprojektowany (nie używany) do takiego użycia;
  • Skrypty Delphi (DWS lub PascalScript) zostały stworzone głównie dla automatyzacji, a nie obliczeń (i nie są szeroko stosowane);
  • Nie wiem dlaczego mówisz o używaniu Delphi IDE w aplikacji klienta, ale nie powinieneś używać Delphi IDE do takich implementacja własnościowa: prymitywne niestandardowe IDE będzie bardziej wydajne niż pełny RAD; {]}
  • Lua należy być może rozważyć: możesz zrobić, co chcesz z tym silnikiem skryptu - ale nie ma wielkiej społeczności matematyków używających Lua, w przeciwieństwie do Pythona...

W świecie Open Source można znaleźć wiele bardzo ciekawych rozwiązań. Zobacz http://blog.interlinked.org/science/open_source_math_programs.html

Myślę, że oktawę można rozważyć. Jest prosty, potężny, dojrzały, dobrze znany, używany przez wiele programów i wieloplatformowy.

Z tego co wiem, możesz wywołać bibliotekę Octave z kodu C/C++. Można to zrobić z Delphi IMHO, po przetłumaczeniu powiązanego .pliki H.

Ale bądźcie świadomi licencji GPL. Jeśli twoje oprogramowanie jest zastrzeżone, Dystrybucja Octave jako części Twojego oprogramowania może być niemożliwa. Ale można nazwać bibliotekę Octave lub inną GPL rzeczy (jak Python) z waszego oprogramowania, jeśli zrobicie jasne rozróżnienie pomiędzy waszym oprogramowaniem a oprogramowaniem GPL.

Osadzanie Pythona może być dobrym rozwiązaniem. Ten język może być wywoływany z Delphi i powinieneś mieć dobrą architekturę, bez potrzeby bezpośredniego wywoływania niektórych bibliotek C, takich jak Octave. Python może być Twoją główną bramą do wszystkich innych bibliotek obliczeniowych z Twojej aplikacji Delphi. Na przykład oktawę można wywołać z jakiegoś Pythona biblioteki. Możesz również użyć skryptów Pythona do automatyzacji własnej aplikacji. I masz jakieś Python IDE w Delphi wokół. Oczywiście Licencja Open Source każdego komponentu jest Bezpieczna. Im więcej o tym myślę, tym bardziej podoba mi się to drugie rozwiązanie...

Tylko moje dwa centy. :)

 18
Author: Arnaud Bouchez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-13 11:43:04

Brak ostatecznej odpowiedzi, ale kilka innych sugestii: -

  • Zapoznaj się z LMD Innovative ScriptPack, który obsługuje natywne Skrypty Pascala, a także języki oparte na Activescriptingu. Zastrzeżenie : używam wielu narzędzi i komponentów LMD, ale osobiście nie używałem Scriptpack.

  • LMD ma również Pakiet am IDE-Tools , który może naprawdę uprościć zadanie tworzenia prostego niestandardowego narzędzia 'RAD', jeśli chcesz to zrobić Trasa

  • Kolejny głos na Lua. Używałem Lua jako języka skryptowego w aplikacjach C++Builder2010 i działa dobrze. Możesz wykorzystać C++Builder / Delphi RTTI, aby pomóc w integracji skryptu Lua z kodem C++.

Re. Lua: mamy produkt, który przez wiele lat posiadał ultrasimple 'homebrew' scripting system wewnątrz niego. Brak pętli, warunków lub procedur-tylko sekwencja sparametryzowanych poleceń. Chcieliśmy rozszerzyć to na coś mocniejszego i wybierając rozwiązanie innych firm wydawało się o wiele mniej bolesne niż wymyślanie koła na nowo. Głównym powodem wyboru Lua do tego były: -

  • szybko
  • opublikowane książki dostępne (Programowanie w Lua )
  • napisane w C
  • bezpośrednio osadzalne w naszym projekcie poprzez statyczne łączenie
  • Licencja MIT
  • kod C++ może wywoływać kod Lua i uzyskiwać dostęp do zmiennych Lua
  • kod Lua może wywoływać funkcje C++
  • mały ślad wdrożenia. Lua i to jest standard biblioteki dodane pod 200K do naszego .EXE, przed kompresją.

Jestem pewien, że inne języki mogłyby być równie dobre, ale to' lekka ' natura Lua dała mi przewagę.

 7
Author: Roddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-06 09:40:10

Lubię tam wiele odpowiedzi i cóż, jestem stronniczym nerdem Delphi:) ale sugerowałbym użycie kombinacji: Ro Pascal Script+ ESBPCS for VCL.

Nie wiem czy to brzmi jak ty - ale ja bym spróbował.

Ze strony wyodrębniłem ten link o Matrix non visual część biblioteki. Jest ich o wiele więcej, warto spróbować!

 5
Author: Andrea Raimondi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-03 17:55:59

Z Pythonem otrzymujesz NumPyi SciPy "za darmo". Tak, jest GIL, ale jest aktywny tylko wtedy, gdy twój interpreter Pythona uruchamia wiele wątków. Wierzę, że można uruchomić wiele hostów Pythona w oddzielnych wątkach bez problemu(nie próbowałem, myślałem).

Są też takie rzeczy jak multiprocessing .

Python 3 wciąż się łapie, NumPy rozpoczął obsługę Pythona 3 w wersji 1.5.0, a SciPy rozpoczął obsługę w wersji 0.9.0. Również, GIL jest nadal z Pythonem 3, chociaż został przerobiony, więc powinno być lepiej. Również NumPy uwalnia blokadę podczas operacji.

 5
Author: Harriv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:27:23

Z powodzeniem korzystamy z Microsoft script automation (active scripting). Zasadniczo musisz zaimplementować hosta, który uruchomi Skrypty. Skrypty mogą być pisane w dowolnym języku, który jest zainstalowany na bieżącej maszynie. Używamy JavaScript do naszych skryptów, ale nie jesteś do tego Ograniczony. Istnieje wiele implementacji skryptów (nawet python).

Z twojej strony będziesz musiał dostarczyć framework do uruchomienia skryptu. Nie proste, ale z podstawowymi Zrozumienie tego też nie jest trudne. Istnieją implementacje stworzone dla Delphi. Są tu pewne zasoby: http://www.torry.net/pages.php?id=280 ale możesz znaleźć zasoby w całej sieci.

Powodzenia!

 4
Author: r4w8173,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-01 08:42:28

Proponuję Lua. Jest to jeden z najczęściej używanych języków skryptowych, istnieje wiele narzędzi, takich jak debuggery, edytory z podświetleniem składni itp., Wiele osób go używało, jest to jeden z najszybszych języków skryptowych, które można łatwo podłączyć do silnika c / C++. Bardzo łatwo jest rozszerzyć C-functions do niego (szczególnie jeśli używasz LuaJIT plus FFI). Nie ma naprawdę dobrego sposobu na wielowątkowość w lua, ale można łatwo uruchomić wiele instancji lua w oddzielnych wątkach w celu uruchomienia wielu skryptów.

 4
Author: Simon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-03 23:05:23

Ponieważ potrzebujesz języka skryptowego ukierunkowanego na matematykę, polecam rzucić okiem na Common Lisp . Jest to dialekt Lispu, który został pierwotnie opracowany jako konwencjonalna notacja matematyczna dla programów komputerowych. Systemy algebry komputerowej, takie jak Maxima i Axiom są napisane w Common Lispie. Najbardziej znaną implementacją Common List jest ECL , która jest wydana na licencji LGPL. Oczywiście istnieje wiele innych open source / align = "left" /

Istnieje również interpreter GNU Guile dla języka programowania Scheme (dialekt Lispu). Ich strona stwierdza, że

Guile jest wydajną maszyną Wirtualną, która wykonuje przenośny zestaw instrukcji generowany przez kompilator optymalizujący i bardzo łatwo integruje się z kodem aplikacji C i C++. Oprócz Scheme, Guile zawiera Kompilatory dla ECMAScript i Emacs Lisp (wsparcie dla Lua jest w toku)...

Jednak sam nigdy nie korzystałem z tej biblioteki, więc nie mogę zagwarantować, jak łatwo będzie osadzić ją w Twojej aplikacji.

 4
Author: ezpresso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-08 15:53:23

Nikt nie wspomniał o Paxcompilerze, który może skompilować Pascal, Javascript i Basic do kodu natywnego i może być łatwo skonfigurowany, aby uzyskać dostęp do obiektów w projektach Delphi. Ma wiele zalet:

  1. skompilowany kod będzie działał szybciej niż zinterpretowany
  2. zapewnia 3 różne języki programowania, dzięki czemu prawie każdy programista może poczuć się jak w domu
  3. jako programista Delphi masz dostęp do kodu źródłowego i jest on ściśle zintegrowany z Twoim projekt
  4. cena jest bardzo interesująca

Wady i wyzwania dla popularnego projektu to:

  1. Upewnij się, że 3 języki są traktowane jednakowo: z moich testów wynika, że JavaScript jest w tyle pod względem dołączonych próbek
  2. Jeśli zdecydujesz się połączyć wszystkie 3 języki programowania, możesz chcieć dostarczyć prawie wszystkie próbki we wszystkich językach i musisz być wygodny w obsłudze wszystkich trzech z nich
 4
Author: jonjbar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-14 11:58:40

Sugeruję, abyś spojrzał na WX (C++) oparte GUI wrapper wokół klasycznego programu open source matematyki o nazwie Maxima, który nazywa się wxMaxima w systemie Windows. Jest jednak na licencji GPL, a nie LGPL, więc prace pochodne również muszą być open source.

Powinieneś być w stanie używać tej aplikacji i jej silnika algebry, i być może mógłbyś napisać własny wrapper Delphi dla tego interfejsu C++ wokół silnika MACSYMA / MAXIMA (LISP). Kod źródłowy ich systemu zawiera kilka rzeczy, które możesz chcieć również zapakować i dostarczyć jako usługę:

  1. Sposób kodowania równań matematycznych do formatu wyświetlania, z formatu wprowadzonego przez użytkownika, który jest dobrze zdefiniowany i który można następnie udokumentować.

  2. Prosty "język" spec, który można użyć do skomponowania "WYSIWYG equation" narzędzia z.

Maxima może obsługiwać wykresy, macierze, algebrę liniową i podstawowe obliczenia, a silnik jest solidny.

Skoro już robisz wiele rzeczy w C++, rozważyłbym zrobienie całej aplikacji przy użyciu wxWidgets, z wxMaxima jako bazą. Nie jestem pewien, czy możesz zrobić hybrydy wx + VCL w C++Builderze, ale na pewno powinieneś go wypróbować. Jeśli nie możesz, to powiedziałbym, że zrób główną aplikację w VC++ z wxWidgets i zrób dla niej wtyczki w Delphi (jako biblioteki DLL).

Tutaj wpisz opis obrazka

 3
Author: Warren P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-09 14:17:32

Moje pomysły:

  1. Zadzwoń do Mathematica przez jego API (C, Java, C#), ale obawiam się, że może to być zbyt wolne dla Ciebie http://reference.wolfram.com/mathematica/guide/MathLinkAPI.html

  2. Wygeneruj F # za pomocą http://fsharppowerpack.codeplex.com / i jego fslex, fsyacc. Zobacz także: Jak można ocenić wyrażenie zapisane jako łańcuch znaków w F # , Tim Robinson buduje kompilator Lispu W F#

 3
Author: oleschri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:30

Wspomniałeś, że audience jest prawdopodobnie używany do R. powinieneś spojrzeć na integrację produktu z R, albo jako rozszerzenie R lub wywołanie R z twojego produktu. Zobacz Pisanie Rozszerzeń R . W ten sposób możesz wykorzystać moc R i znajomość r.

 3
Author: crefird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-10 02:07:42

GIL w Pythonie nie powinien być showstopperem, ponieważ jego istnienie nie oznacza, że Twoja aplikacja nie może wykonywać wielu wątków. To prawda, że nie można użyć całego rdzenia CPU dostępnego w systemie, ale ponownie, będzie to miało wpływ tylko wtedy, gdy większość kodu została napisana w Pythonie. Twoja aplikacja będzie hostować kod Pythona prawda? a te skrypty będą intensywnie wywoływać procedury matematyczne dostępne w aplikacji hosta. Oznacza to, że było jeszcze wiele sposobów na uwolnienie i przytrzymanie GIL na Twoim wniosku do zminimalizuj jego efekt uboczny, a wszystko będzie dobrze.

 3
Author: Jaimy Azle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-10 07:57:47