Код: Выделить всё
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()
Подробнее здесь: https://stackoverflow.com/questions/783 ... pts-from-c