84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
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
执行结果: