【发布时间】:2014-07-18 23:32:16
【问题描述】:
我正在实现一个 Python 插件,它是一个更大的 C++ 程序的一部分。该程序的目标是允许用户在 Python 中输入命令的操作。它当前从 C++ 函数接收字符串并通过 exec() 函数运行它。然后,用户可以使用 API 来影响更大的 C++ 程序的更改。
我正在开发的当前功能是暂停执行功能。它需要记住它在代码执行中的位置以及任何局部变量的状态,并在满足条件后恢复执行。我对 Python 不是很熟悉,希望得到一些关于如何实现此功能的建议。我的第一个设计理念:
1) 使用 yield 命令。 一开始这似乎是一个好主意,因为当您使用下一个命令时,它会记住我需要的所有内容,但问题是,据我所知,yield 只会返回到调用堆栈中的上一个级别。因此,如果用户调用一个产生它的函数,它将简单地返回到用户的代码,而不是更大的 C++ 程序。据我所知,没有办法将 yield 命令向上传播???
2) 线程 创建一个主 python 线程,为每个命令创建一个线程。该主线程将为每个执行的命令生成一个线程,并在完成时将其杀死。如果它需要暂停并重新启动,它可以通过锁队列来完成。
这是我想出的仅有的两个选项。我不确定 yield 函数会起作用,或者它的设计目的是什么。我认为 Threading 方法会起作用,但可能有点矫枉过正,并且需要很长时间来开发。我也在寻找某种 Python 中的任务模块,但找不到我想要的东西。我想知道是否有人有任何其他建议,因为我对 Python 不是很熟悉。
编辑:正如 cmets 中所述,我没有解释脚本“暂停”时需要发生什么。 python插件需要允许C++程序继续执行。在我看来,这意味着 A) 如果我们谈论的是单线程方法,则返回,或者 B) 向 C++ 发送消息(函数调用?)
编辑编辑:如前所述,我没有完全解释问题描述。我将发表另一篇文章,更好地说明当前存在的内容、需要发生的事情以及提供一些 sudo 代码。我是 Stack Overflow 的新手,所以如果这不是适当的回复,请告诉我。
【问题讨论】:
-
我理解个别的话,但我认为你需要用伪代码或其他东西表达你的问题......我不明白你的问题是什么......
time.sleep将使python脚本暂停...但我很确定这不是你在这里问的内容 -
我同意这一点。您需要解释仅让脚本暂停给定时间段无法实现的目标。目前很难准确掌握您想要做什么。
-
感谢您帮助澄清我需要在问题陈述中包含的内容。
标签: python c++ multithreading task