首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python.net进行多线程

用python.net进行多线程
EN

Stack Overflow用户
提问于 2022-04-06 01:11:58
回答 1查看 283关注 0票数 1

我使用以下代码从C#调用python:

代码语言:javascript
复制
if (!PythonEngine.IsInitialized)
{
    PythonEngine.Initialize();
    PythonEngine.BeginAllowThreads();
}
//var pythonScriptCommand = string.Format("{0}", Path.Combine(AppContext.BaseDirectory, "scripts" + Path.DirectorySeparatorChar + "keyringtest.py")); //Path.Combine(AppContext.BaseDirectory, "PythonSampleSystemDiagnostic.py");

IntPtr gs = PythonEngine.AcquireLock();

using (PyScope scope = Py.CreateScope())
{

    //foreach (var array in myCommand.Settings)
    //{
    //    Console.WriteLine(string.Join(" ", array)); ;
    //}
        string fileContent = File.ReadAllText(Path.Combine(@"../../Source/AMD.Agent.Standard.DataExchange/Commands/PythonScripts/", ScriptName));
        var file = PythonEngine.Compile(fileContent);

        scope.Execute(file);
        //dynamic accessToken = scope.Get("get_access_token");
    dynamic dataExtract = scope.Get("get_result_http");

    //_logger.Info(myCommand.Settings.ToString()   + "123123123123");
    var dict = myCommand.Settings.ToDictionary(x => x.SettingName, x => x.SettingValue);
    var dict123 = JsonConvert.SerializeObject(dict);
    dataExtract(token,url1,"PerformanceHistoryPeriod");
    //Console.WriteLine(_apxApiService + "123123123123123");
}

PythonEngine.ReleaseLock(gs);
PythonEngine.Shutdown();

引用此链接:https://mail.python.org/pipermail/pythondotnet/2010-December/001058.html

我不知道这是如何工作的,如果我在不同的线程中多次调用这段代码,那么所有的脚本执行都是并行运行的,还是根据锁依次运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-07 00:40:36

我不认为您可以同时执行多个线程与Python.NET,因为全局解释器锁。您仍然可以在单独的线程中执行python代码,但不能同时执行多个线程(至少现在是这样)。

另一种方法是使用IronPython,它提供了Python2语法的.NET实现--它可以很好地在多个线程中执行代码。

您可以在这里阅读更多关于使用Python.NET与IronPython的利弊的信息:

https://www.alternetsoft.com/blog/python-net-iron-python-scripting

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71760020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档