如題,求教!
可以透過另開一條執行緒, 去專門做這件事情, 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()
線程。定時器
如果直接開子程序的話,退出主程序時子程序會一直存在, 建議設定成守護程序
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...能夠進行極其複雜的定時設計,每個幾秒幾分鐘,或者是某天的具體一刻等等,可以阻塞進程,可以在後台,全部按照你的要求。
雷雷
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請自行調整下語法
雷雷線程。定時器
如果直接開子程序的話,退出主程序時子程序會一直存在, 建議設定成守護程序
可以考慮Advanced Python Scheduler(http://apscheduler.readthedoc...
能夠進行極其複雜的定時設計,每個幾秒幾分鐘,或者是某天的具體一刻等等,可以阻塞進程,可以在後台,全部按照你的要求。
雷雷
Python任務調度模組 – APScheduler(點擊查看)
APScheduler是一個Python定時任務框架,使用起來十分方便。提供了基於日期、固定時間間隔以及crontab類型的任務,並且可以持久化任務並以daemon方式運行應用程式。
下面是一個簡單的例子,每隔10秒列印一次hello world
執行結果: