нужен delphi консультант

alex_fornever
Дата: 27.05.2011 13:30:46
требуются консультации по delphi, время оплачу, задача - встроить в приложение python интерпретатор, проблема с запуском нескольких скриптов "одновременно"
alex_fornever
Дата: 27.05.2011 14:08:40
если вопрос ставлю некорректно, прошу указать, исправлюсь
aleksandr-pro
Дата: 27.05.2011 14:38:00
alex_fornever,

напиши подробнее при чем тут Delphi и Python
Гаджимурадов Рустам
Дата: 27.05.2011 14:48:49
alex_fornever
если вопрос ставлю некорректно, прошу указать, исправлюсь

1. Советую обратиться в раздел Работа - там больше ориентированных
на "подработать" людей, хоть дельфистов в целом и удельно меньше.

2. Огласите конкретные сроки, объемы, сумму и пр.
MMM_Corp
Дата: 27.05.2011 15:18:12
Работал с PHP-интерпритатором, думаю с питоном аналогично будет, есть своя даже WAMP-оболочка, в общем свяжитесь со мной, обсудим.

Работаю только по предоплате.

ICQ: 338928670
Мимопроходящий
Дата: 27.05.2011 15:20:08

MMM_Corp
Работаю только по предоплате.


alex_fornever, не верь ему.
это ламер.
в кубе.


--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4

alex_fornever
Дата: 27.05.2011 15:57:29
aleksandr-pro,

есть готовая программа написанная на delphi, есть класс

type
  TZombie = Class

  published
    procedure StepForward();
    procedure Bite();
    procedure Jump();

  end;

в эту программу встроен remObjects PascalScript

есть кнопочка "Добавить зомби". при нажатии происходит примерно следующее:

zombie := TZombie.Create()
TZombieThread.Create(zombie)

в Execute функции у TZombieThread происходит примерно следующее:
pascalScriptEngine := TPascalScript.Create()
pascalScriptEngine.addMethod('StepForward', stepForward); // stepForward - метод TZombieThread
pascalScriptEngine.addMethod('Bite', Bite);
pascalScriptEngine.addMethod('Jump', Jump);
pascalScript.runScript(pathToScript);

в итоге из скрипта можно управлять зомби

задача - к программе так же подключить Python.

Для этого использую вот этот компонент http://code.google.com/p/python4delphi/

есть два направления как решить задачу

первый вариант - научится инстанцировать несколько интерпретаторов, так же как было сделано с PascalScript.
проблемы связанные с этим:
+

[15:11] <retif_> explain me please why there are restriction while embedding python in C application to instantiate only one interpreter? why i can`t instantiate few interpreters in different threads of one process?
[15:12] <bonsaikitten> retif_: global state I'd guess
[15:12] <bonsaikitten> retif_: highlander-problem - there can be only one
[15:12] <ssbr> retif_: because the python interpreter has globals
[15:14] <retif_> ssbr: but this globals will be "global" in own c-thread, isn`t they?
[15:14] <Yhg1s> retif_: no.
[15:14] <Yhg1s> retif_: they're *C* globals. They're static data.
[15:14] <ssbr> retif_: that is not how globals work. :(

есть второй вариант, можно интерпретатор просить создать несколько потоков со скриптами
проблемы связанные с этим:
+

1. это медленнее т.к. у питона проблемы с GIL
2. у всех скриптов общее пространство имён соотв.
import Zombie
Zombie.bite() - нельзя повешать на дельфийский TZombieThread.bite
MMM_Corp
Дата: 27.05.2011 16:45:20
Мимопроходящий,

см. портфолио: http://www.weblancer.net/users/MMM_Corp/portfolio/
отзывы: http://www.weblancer.net/users/MMM_Corp/reviews/
ну и пусть я буду ламером в ваших глазах, мне от ваших слов не тепло ни холодно)
aleksandr-pro
Дата: 27.05.2011 16:45:35
Я думаю в любом случае потоки надо пробовать, то что есть проблемы еще не значит что они вылезут у тебя.
fd00ch
Дата: 27.05.2011 16:53:29
alex_fornever, с PascalScript работал плотно одно время. Правда, в куче потоков не запускал. Для начала - проверь, поддерживает ли эта либа многопоточность. Если да - воздавай с каждом потоке свой скриптер и работай.