在Python中睡觉时保持活跃

时间:2012-10-06 00:03:44

标签: python sleep

if ":!giveaway" in prevdata and senderusr in securelist and agive == 0:
    agive = agive+1
    message("Giveaway started by: " + senderusr)
    time.sleep(3)
    agive = 0
    enteredgiveaway = enteredgiveaway.rstrip()
    enteredgiveaway = enteredgiveaway.split(" ")
    gg = random.choice(enteredgiveaway)
    message("The winner of the giveaway is: " + gg)
    gg = ""
    enteredgiveaway = ""

if "PRIVMSG" in prevdata and agive == 1:
    enteredgiveaway += senderusr + " "

第一个if开始赠品,然后在3秒后将选择一个输入IRC的随机用户,并向IRC发送消息,说明谁赢了。

但是,我的问题是第二个if无法收集用户,因为第一个命令会休眠该程序而另一个if无法工作。

我如何睡觉,但让程序可以做其他事情?

(IRC Bot)

整个代码:http://pastebin.com/Qr8hAH14

1 个答案:

答案 0 :(得分:0)

让第一个if子句设置为Timer,调用一个方法来执行你在睡觉后做的事情。

from threading import Timer

def giveaway():
    agive = 0
    enteredgiveaway = enteredgiveaway.rstrip()
    enteredgiveaway = enteredgiveaway.split(" ")
    gg = random.choice(enteredgiveaway)
    message("The winner of the giveaway is: " + gg)
    gg = ""
    enteredgiveaway = ""

并在您引用的代码段中:

if ":!giveaway" in prevdata and senderusr in securelist and agive == 0:
    agive = agive+1
    message("Giveaway started by: " + senderusr)
    t = Timer(3, giveaway)
    t.start()

...

这有点粗略,因为我无法分辨在哪里,例如enteredgiveaway来自您的代码示例。因此,根据代码的其余部分,您可能需要重新组织/重构一下才能使其正常工作。如果你还没有把它们放在一个类中并使用实例变量,那么它也可能更好。