【问题标题】:Starting multithread python code from c++从 C++ 启动多线程 python 代码
【发布时间】:2017-11-08 11:36:20
【问题描述】:

我想创建一个简单的 python 网络服务器来公开我的 c++ 应用程序的一些功能。

我已经嵌入了 python,我可以调用 python 代码并回调 c++ 函数进行交互。

我的问题是能够在不锁定应用程序的情况下使网络服务器运行。

对网络服务器使用 python 线程在初始化完成后立即停止服务器。如何让 Python 解释器有时间继续线程处理?


旧解释

如果我创建网络服务器(例如使用cherrypy),从浏览器调用c++ 函数也很容易......缺少的是c++ 应用程序被锁定。我的想法是使用 python 线程,但是从 test 开始,python 代码要锁定,直到调用另一个 python 代码(任何 python 代码)。

所以我的结论是,在 c++ 应用程序(MFC 应用程序)的事件管理期间,我需要给 python 解释器一些时间

这是一个最佳实践吗?是否有一些 API 函数可以做到这一点?

其他解决方案是创建一个 c++ 线程并使用 PyThread* 函数启动解释器...但我担心的是 GIL 会锁定 GUI 应用程序。

再说一遍:这类工作的最佳做​​法是什么?

【问题讨论】:

  • 请不要询问您的解决方案。请描述您尝试解决的问题。你在这方面做得还不够好。
  • @IInspectable 我已经修改了我的问题....但是如果你说我做得不好,请同时添加一个动机,这样我可以提出一个更好的问题。
  • 你可能应该拿tour,当它提供给你时。请特别阅读How to Ask。更新没有做任何事情来澄清这个问题。当您不了解 MFC、C++ 或 Windows API 时,我们无法帮助您编写 MFC 代码。这些类型的问题通常不会获得有价值的帮助。

标签: python c++ multithreading mfc


【解决方案1】:

如果您使用的是socket,通常需要选择select-vs-multi-threading。选择模式会阻止您的应用,但首先要确保这是您需要的。

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 2012-09-08
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多