Wie bereits erwähnt, gebt mir bitte einen Rat!
可以通过另开一条线程, 去专门做这件事情, py2代码如下, 如果是py3请自行调整下语法
# coding: utf8 import threading import time # 真正要执行的函数 def t1(): print ('ok') # 每隔10秒钟执行 def t2(): while 1: t1() time.sleep(10) if __name__ == '__main__': t = threading.Thread(target=t2) t.start() # 此处写你主线程要处理的事情..... t.join()
threading.Timer
import threading as thd import time def fn(): print(time.time()) thd.Timer(10,fn).start() fn()
如果直接开子进程的话,退出主进程时子进程会一直存在, 建议设置成守护进程
import sys import signal import threading import time from datetime import datetime def quit(signum, frame): sys.exit() def process_fun(): while True: print datetime.now() time.sleep(1) if __name__ == '__main__': try: signal.signal(signal.SIGINT, quit) signal.signal(signal.SIGTERM, quit) p = threading.Thread(target=process_fun) #注册成为主进程 p.setDaemon(True) p.start() #如果没有主进程, 就用循环代理 while True: pass except Exception as e: pass
可以考虑Advanced Python Scheduler(http://apscheduler.readthedoc...能够进行极其复杂的定时设计,每个几秒几分钟,或者是某天的具体一刻等等,可以阻塞进程,可以在后台,全部按照你的要求。
# -*- coding: utf-8 -*- import gevent import time class Timer(object): """定时器,定时执行指定的函数 """ def __init__(self, start, interval): """ @start, int, 延迟执行的秒数 @interval, int, 每次执行的间隔秒数 """ self.start = start self.interval = interval def run(self, func, *args, **kwargs): """运行定时器 :param func: callable, 要执行的函数 """ time.sleep(self.start) while True: func(*args, **kwargs) time.sleep(self.interval) def send_message(): pass if __name__ == "__main__": scheduler = Timer(5, 10 * 60) gevent.spawn(scheduler.run(send_message))
APScheduler是一个Python定时任务框架,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务、并以daemon方式运行应用。
下面是一个简单的例子,每隔10秒打印一次hello world
from apscheduler.schedulers.blocking import BlockingScheduler def my_job(): print 'hello world' sched = BlockingScheduler() sched.add_job(my_job, 'interval', seconds=10) sched.start()
#-*- coding:utf8 -*- import multiprocessing import time def f(): print time.ctime(),'这是子进程,每10S执行一次' def work(): while 1: f() time.sleep(10) if __name__ == '__main__': p = multiprocessing.Process(target=work,) p.start() p.deamon = True while 1: print '这是主进程,每1秒执行一次' time.sleep(1)
执行结果:
可以通过另开一条线程, 去专门做这件事情, py2代码如下, 如果是py3请自行调整下语法
threading.Timer
如果直接开子进程的话,退出主进程时子进程会一直存在, 建议设置成守护进程
可以考虑Advanced Python Scheduler(http://apscheduler.readthedoc...
能够进行极其复杂的定时设计,每个几秒几分钟,或者是某天的具体一刻等等,可以阻塞进程,可以在后台,全部按照你的要求。
Python任务调度模块 – APScheduler(点击查看)
APScheduler是一个Python定时任务框架,使用起来十分方便。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务、并以daemon方式运行应用。
下面是一个简单的例子,每隔10秒打印一次hello world
执行结果: