【问题标题】:python escaping an infinity loop of pyqtpython转义pyqt的无限循环
【发布时间】:2015-10-28 13:14:10
【问题描述】:

我将 pyqt 用作无限循环,但我不知道如何以编程方式或 Python 方式摆脱它。下面是我的代码。

from PyQt4.QtGui import QApplication

loop = QApplication([])  
main()                   
loop.exec_()

我想在我的 main() 函数中写,如果满足某些条件,然后转义。

我对编程完全陌生,我一直试图在谷歌上找到任何线索,比如 close() 什么的,没有任何效果。

任何帮助,提示将不胜感激。谢谢。

【问题讨论】:

  • 根据下面的 cmets 判断,您尝试做的是“生产者消费者模式”的一个很好的例子,其中一个线程产生某些东西(例如从市场获取价格),另一个线程使用此信息 - 您的交易算法。谷歌搜索它,你可以找到例如这个例子:agiliq.com/blog/2013/10/producer-consumer-problem-in-python

标签: python-3.x pyqt4 infinite-loop


【解决方案1】:

在我给你我的解决方案之前,我能问一下你为什么故意使用无限循环吗? 无限循环正是它所说的,这意味着它无限地继续。除非您在循环中有一些条件检查,可以检查是否命中了某个数字或值,然后关闭,否则您的循环将无限期地继续。

现在寻求解决方案: 在您的终端(或运行此循环的任何位置)中按 Ctrl-C 将停止程序运行。这也是一个通用命令。 在程序方面,使用 break 会打破你的循环。我希望这能回答你的问题。

这里有一个代码 sn-p 可能对你正在做的事情有所帮助:

def main():
    while(Some Boolean Value):
        #Things you want to do in your loop
        if(Some Boolean Value):
            break

解决您的问题的最佳方案是多线程。这里有两个链接可以解决您想要做的事情:

Stopping a thread after a certain amount of time

Is there any way to kill a Thread in Python?

【讨论】:

  • 因为我在做自动交易算法。我的程序需要在市场开放时保留,并且每当它从股票公司 API 获取价格值时,它必须处理算法。等待获取值的部分迫使我使用无限循环,所以我首先使用了while 1:,它需要很多资源,我转向pyqt。
  • 关于您的解决方案,我知道 ctrl+C,我想要的是一些自动解决方案,例如,在我的代码中,我想将转义部分放入。
  • 好的,所以你可以做一个不断重新分配股票市场价值的函数。例如,在您的循环中,获取股票价格值,将其分配给一个变量(这是类派上用场的地方,因此您可以将其分配给“this.stockPrice”),然后检查“this.stockPrice”的价格在你的 while 循环中。这样,每当股价变化时,您的 while 循环就会中断。
  • 无论如何,谢谢您的回答。我的代码有什么方法可以在代码上按 ctrl+C 吗?如果可以的话,那就太好了
  • 不,我不能使用 while 循环。就像我说的那样,它占用了太多资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
  • 2013-10-12
  • 2017-10-12
  • 2020-11-30
相关资源
最近更新 更多