python 64式 第6式 定時器

2021-08-29 05:31:52 字數 1990 閱讀 1828

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import logging

import sys

from datetime import datetime

from oslo_config import cfg

from oslo_log import log

from oslo_service import service

'''關鍵:

1 編寫的定時任務需要繼承oslo_service.service類,實現start方法,

start方法是主入口

def start(self):

delay_timers = 3

self.tg.add_timer(self.period, self.runtask, delay_timers)

上述self.tg.add_timer的引數分別是:

self.period: 定時任務的時間間隔

self.runtask: 定時執行的方法

delay_timers:首次執行的延遲啟動時間,即延遲指定時間,開啟第一次定時任務

參考:'''log = logging.getlogger(__name__)

opts = [

cfg.intopt('period',

default=10,

help='scan interval'),

]conf = cfg.conf

conf.register_opts(opts)

def timehelper(func):

try:

start = datetime.now()

info = "############ begin task, start: %s ##########" % (

str(start))

log.info(info)

func(*args, **kwargs)

end = datetime.now()

diff = end - start

info = "##### end task, end: %s, cost time: %s #####" % (

str(end), str(diff))

log.info(info)

except exception as ex:

info = "exception type is %s, message is %s" % (ex.__class__.__name__, ex)

log.error(info)

class mytask(service.service):

def __init__(self, *args, **kwargs):

super(mytask, self).__init__(*args, **kwargs)

self.period = conf.period

def process(self):

print "process task"

@timehelper

def runtask(self):

self.process()

def start(self):

delay_timers = 3

self.tg.add_timer(self.period, self.runtask, delay_timers)

def prepare_service():

log.register_options(conf)

log.set_defaults(default_log_levels=conf.default_log_levels)

def main():

prepare_service()

service.launch(conf, mytask()).wait()

if __name__ == "__main__":

main()

python 64式 第13式 執行緒

usr bin env python coding utf 8 import time import threading 關鍵 1 併發和並行 併發 交替處理多個任務的能力 關鍵在併發交替 並行 同時處理多個任務的能力 關鍵在並行同時 2 多程序與多執行緒 多程序可以充分使用多個cpu 多執行緒不能...

python 64式 第10式 深淺拷貝

usr bin env python coding utf 8 import copy 關鍵 1 深拷貝 拷貝了物件所有元素,包含巢狀元素。是與原來物件無關的全新物件。無關性。2 淺拷貝 建立新物件,但新物件中各個元素是原物件對應各個元素的引用。3 舉例如下 a 1,2,3 c copy.copy ...

python 64式 第49式 dict原始碼分析

目標 弄清楚python中dict的實現原理 1.1 原理 python的字典實際是雜湊表,通過雜湊函式將key對映到表中的位置來 儲存value。存在不同物件經過雜湊函式得到的雜湊值可能相同,此時 採用開放定址法來解決衝突。開放定址法通過二次探測函式f尋找下乙個候選位置,若位置可用,則將資料插入。...