运行主程序时每5分钟运行一次功能

时间:2017-12-03 18:45:56

标签: python

我想在主程序仍在运行时每隔5分钟运行一次函数。

我发现有关如何每隔几秒钟运行一次功能的多篇帖子,但它们似乎对我不起作用。

这是我的计划:

from Read import getUser, getMessage
from Socket import openSocket, sendMessage
from Initialize import joinRoom, Console
from question import query_yes_no
from Settings import AIDENT
import string
import sched, time
import urllib.parse
import requests
import subprocess
import sys
import os 

s = openSocket()
joinRoom(s)

while True:
    try:
        try:
            readbuffer = s.recv(1024)
            readbuffer = readbuffer.decode()
            temp = readbuffer.split("\n")
            readbuffer = readbuffer.encode()
            readbuffer = temp.pop()
        except:
            temp = ""

        for line in temp:
            if line == "":
                break
            if "PING" in line and Console(line):
                msgg = (("PONG tmi.twitch.tv\r\n").encode())
                print(msgg)
                s.send(msgg)
                break
            user = getUser(line)
            message = getMessage(line)
            print (user + " > " + message)
            PMSG = "/w " + user + " "

            if "!ping" in message:
                sendMessage(s, "PONG ( i'm working fine )")


    except:
        pass

我需要每5分钟运行一次sendMessage()函数,而不会中断主程序。

2 个答案:

答案 0 :(得分:3)

你有使用线程的情况,你的主方法将继续在单独的线程中执行,并且每隔n秒执行转发器功能 示例代码如下:

import threading

def printit():
  threading.Timer(5.0, printit).start()
  print "Hello, World!"

printit()

自己尝试一下。

答案 1 :(得分:0)

你应该使用线程。这将创建一个线程,它只执行您的代码并休眠5分钟。不要运行你的函数,而是运行最后两个命令来创建线程并启动它。

import threading
import time

def pong():
    while True:
         sendMessage(s, "PONG ( i'm working fine )")
         time.sleep(300)

t = threading.Thread(target=pong, args=(,))
t.start()
相关问题