Razbezhkin
@Razbezhkin
программист, преподаватель

Как запускать код на python из c#?

Здравствуйте!
Какие есть варианты запуска кода, написанного на питоне, в котором используются такие библиотеки как matplotlib, sklearn, pandas, (и др., привычные библиотеки, написанные на c++), из кода на c#?

При этом необходимо передавать в код на питоне данные и получать обратно результаты вычислений, а так же хотелось бы, чтобы объекты питона имели продолжительное время жизни, такое-же, как и вызывающий код.

IronPython, как я понимаю, не может использовать многие библиотеки питона.

Через командную строку, тоже не вариант, т.к. между вызовами состояние не сохраняется и передавать параметры через стандартные входы/выходы не интересно.

Что еще можно попробовать?
  • Вопрос задан
  • 4489 просмотров
Решения вопроса 1
Deerenaros
@Deerenaros
Программист, математик, задрот и даже чуть инженер
Если IronPython не интересует, то потенциально есть три способа.

1. Можно вызывать python.dll и управлять состоянием интерпретатора дёргая определённые функции. Это не самый простой способ и почти наверняка потребует собственной сборки пайтона, однако имеет некоторые преимущества. Одно из них - наивысшая скорость, так как всё происходит в одном пространстве имён. И полноценный контроль интерпретатора, только разобраться в реализации. Однако есть множество проблем, которые придётся решить: GIL, контроль состояния, входные данные и сбор результатов вычислений.

2. Можно вызывать python.exe и передавать состояние косвенно (stdout/stdin, socket, shared memory), перебрасывая объекты через примитивы, например, этим. Однако, из сложностей, придётся написать горстку кода на python и быть готовым к ограничениям. Здесь также и упомянутые longclaps микросервисы.

Но если IronPython вызывает интерес, то можно на .NET реализовать всё необходимое, или же использовать готовое. На самом деле, здесь даже немного приветливее смотрится тот же F#, да и вообще платформа у мелкомягких во многом поразительна.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
27 апр. 2024, в 13:49
300000 руб./за проект
27 апр. 2024, в 13:30
30000 руб./за проект
27 апр. 2024, в 13:22
600 руб./за проект