2017-02-05 2 views
1

私は2つの機能を並べて実行しようとしています。2つの関数を同じクラスインスタンスへのアクセスで並べて実行しますか?

基本的には、(クラス内で)Falseに設定され、変数が実行されないようにするコードの一部を持っています。

ただし、再度Trueに設定して、所定の時刻に処理を実行することができます。だから私は変数が絶えず状態をチェックする方法が必要です。

私はそれを別の機能に入れて、それを私の主な機能と一緒に呼びます。私はそれらを一緒に置くならば、私はそれを発見した。 while Trueは、残りの関数を実行からブロックします。

class Alarm: 

def __init__(self): 
    self.alarmpi = None 
    self.alarm_playing = False 
    self.alarm_time = '16:10' 
    self.alarm_enabled = True 

def alarm_toggle(self, status): 
    self.alarm_enabled = status 
    return self.alarm_enabled 

alarm.py

telegram_bot.py

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters 
import logging 
import os 
from alarm import Alarm 
import time 

alarmpi = Alarm() 

def alarmenable(bot, update): 
    if alarmpi.alarm_enabled: 
     update.message.reply_text("Alarm is already enabled") 
    else: 
     update.message.reply_text("Alarm has been enabled") 
     alarmpi.alarm_enabled = True 

def alarmdisable(bot, update): 
    if alarmpi.alarm_enabled: 
     alarmpi.alarm_enabled = False 
     #alarmpi.alarm_enabled = False 
     update.message.reply_text("Alarm has been disabled") 
    else: 
     update.message.reply_text("Alarm is already disabled") 
     print('From sub :' + str(Alarm.alarm_enabled)) 

def main(): 

    <code to start the bot and then go into 'idle mode'.. always listening for commamnds> 

def timer(): 
    while True: 
     if alarmpi.alarm_enabled: 
      print('We are live!') 
     else: 
      print('Hibernating'_ 

if __name__ == '__main__': 
    main() 
    timer() 

私はスレッドとマルチプロセスモジュールと私のtelegram_botファイルの両方の機能を実行しようとしました。しかし、関数は同じクラスインスタンスを共有しません。

答えて

0

私のクラスにwhileループを移動しmain()関数で呼び出しました。

関連する問題