Gil () должен быть выпущен ошибка при использовании Pythonnet для вызова сценариев Python из файла c#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Gil () должен быть выпущен ошибка при использовании Pythonnet для вызова сценариев Python из файла c#

Сообщение Anonymous »

Я запускаю класс в более крупном приложении, в котором используется Pythonnet для вызова функций из сценария Python. Сначала я запускаю эти линии, если двигатель Python уже не был инициализирован -< /p>

Код: Выделить всё

Runtime.PythonDLL = @"C:\Users\micro\AppData\Local\Programs\Python\Python39\python39.dll";
PythonEngine.Initialize();
Py.GIL();
< /code>
, а затем остальная часть функциональности находится в этом разделе -< /p>
using (var scope = Py.CreateScope())
{
dynamic sys = Py.Import("sys");
sys.path.append(@"C:\Users\micro\source\repos\REFWebApp\REFWebApp.Server\Evaluation\STTs\");
var scriptCompiled = Py.Import(scriptname);
string[] message = filenames;
var result = scriptCompiled.InvokeMethod("transcribe_all", message.ToPython());
PyObject[] pylist = result.AsManagedObject(typeof(PyObject[])) as PyObject[];

List transcriptions = new List();

foreach (PyObject pyobject in pylist)
{
string transcript = (string)pyobject.AsManagedObject(typeof(string));
Console.WriteLine(transcript);
transcriptions.Add(transcript);

}
Console.WriteLine(transcriptions);
return transcriptions;
}

< /code>
В основном скрипт Python возвращает список, который затем сохраняется в C#. Все здесь работает отлично при запуске, без ошибок! Если я позволю ему работать в течение 10-15 минут после завершения этого блока, я получаю ошибку < /p>
System.InvalidOperationException: GIL must always be released, and it must be released from the same thread that acquired it.
at Python.Runtime.Py+GILState()+Finalize()
Ошибка добавляется в код pythonnet, поэтому я не уверен, где на самом деле проблема. Pythonengine.shutdown () , и я попытался добавить pythonengine.beginallowthreads () также на первом шаге выше. Я не уверен, что правильно понимаю, куда бросается ошибка и что именно вызывает ее. Ничто из того, что я пробовал до сих пор, не сработало, и поэтому я бы хотел помочь!

Подробнее здесь: https://stackoverflow.com/questions/783 ... pts-from-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»