2015-08-05 3 views
0

Я использую pyqt как цикл бесконечности, но я не знаю, как избежать его программным путем или пифонически. ниже мой код.python escaping цикл бесконечности pyqt

from PyQt4.QtGui import QApplication 

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

Я хочу написать в моей функции main(), как если бы какое-то условие было выполнено, а затем убежать.

Я абсолютно не знаком с программированием, я пытался найти любую подсказку в google, например, close() или что-то еще, ничего не работает.

любая помощь, подсказка будет оценена. Спасибо.

+0

Оцененный комментарии ниже, что вы пытаетесь сделать, это очень хороший пример для «продуцент потребителя шаблон ", где один поток производит что-то (например, получение цен с рынка), а другой поток потребляет эту информацию - ваш торговый алгоритм. Googling для этого вы можете найти, например. этот пример: http://agiliq.com/blog/2013/10/producer-consumer-problem-in-python/ – sebastian

ответ

1

Прежде чем дать вам свое решение, могу ли я спросить, почему вы намеренно используете бесконечный цикл? Бесконечный цикл - это именно то, что он утверждает, то есть он бесконечно продолжается. Если у вас нет какой-либо условной проверки в вашем цикле, которая может проверить, попал ли какой-то номер или значение, затем закрывается, ваш цикл будет продолжаться бесконечно.

Теперь для решения: Нажатие Ctrl-C в вашем терминале (или где-то, когда вы запускаете этот цикл) остановит работу программы. Это универсальная команда. Программный, используя перерыв, сломает ваш цикл. Надеюсь, это ответит на ваш вопрос.

Вот фрагмент кода, который может помочь с тем, что вы делаете:

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?

+0

, потому что я делаю алгоритм автоматической торговли. моя программа должна оставаться в то время, пока рынок открыт, и всякий раз, когда он получает стоимость от API запаса, он должен обрабатывать алгоритм. часть, которая ждет, чтобы получить значения, заставила меня использовать цикл бесконечности, поэтому я сначала использовал в то время как 1 :, он требует много ресурсов, и я перехожу к pyqt. – user159234

+0

и о вашем решении, я знаю, ctrl + C, то, что я хочу, - это какое-то автоматическое решение, например, в моем коде, я хочу включить элемент ускорения. – user159234

+0

Итак, что вы можете сделать, это сделать функцию, присваивает стоимость фондового рынка. Например, в вашем цикле захватите значение цены акции, назначьте его переменной (это то, где классы пригождаются, поэтому вы можете назначить ее «this.stockPrice»), а затем проверить цену «this.stockPrice», в вашем цикле while. Таким образом, всякий раз, когда меняется цена акции, ваш цикл прерывается. –