并排运行两个函数,可以访问同一个类实例?

时间:2017-02-05 10:40:18

标签: python python-3.x python-telegram-bot

我试图并排运行两个功能。

基本上,我的代码中有一部分设置和变量(在一个类中)为False,这反过来应该禁止执行一个函数。

但是,它可以再次设置为True,然后在给定时间执行一个过程。所以我需要一种检查变量状态的方法。

我把它放在一个单独的函数中,然后将它与我的main函数一起调用。我发现如果我把它们放在一起。 while True阻止函数的其余部分执行。

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()

alarm.py

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

我尝试使用Threading和Multiprocess模块​​在telegram_bot文件中运行这两个函数。但是这些功能并不共享同一个类实例。

1 个答案:

答案 0 :(得分:0)

解决了..将while循环移到我的类中并在main()函数中调用它。