1

我正在尝试并排运行两个功能。

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

但是,可以再次将其设置回 True,然后在给定时间执行进程。所以我需要一种不断检查变量状态的方法。

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

电报机器人.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()

警报.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

我已经尝试使用线程和多进程模块在我的电报机器人文件中运行这两个函数。但是这些函数不共享同一个类实例。

4

1 回答 1

0

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

于 2017-02-05T11:09:25.950 回答