栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 将一个方法, 按照设定的时间间隔执行:

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 将一个方法, 按照设定的时间间隔执行:

将一个方法, 按照设定的时间间隔执行:
主要思路就是
分段:
分段通过将目标函数, 这里是logic(), 用yield分段, 然后coroutine.next()分段执行
时间间隔:
时间间隔, 则是通过一个loop函数, 不断从回调函数堆里获取注册的回调. 判断时间间隔, 并执行, 同时主逻辑中, yield之前, 都要注册一个根本上是coroutine.next()的回调

import heapq
import time


class P(object):
	def __init__(self):
		self.callback_heapq = []
		self.coroutine = self.logic()

	def start(self):
		self.process()
		self.loop()

	def process(self):
		self.coroutine.next()

	def loop(self):
		while True:
			trigger_time, _cb = heapq.heappop(self.callback_heapq)
			cur_time = time.time()
			if trigger_time >= cur_time:
				_cb()
			else:
				heapq.heappush(self.callback_heapq, (trigger_time, _cb))

	def addcallback(self, interval, _cb):
		heapq.heappush(self.callback_heapq, (time.time() + interval, _cb))

	def logic(self):
		print 1
		self.addcallback(0.1, self.process)
		yield
		print 2
		self.addcallback(0.1, self.process)
		yield
		print 3
		self.addcallback(0.1, self.process)
		yield


if __name__ == '__main__':
	p = P()
	p.start()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740316.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号