摘要:定义了一个非常类似的模块,其函数接受两个参数,第一个参数是预先定义好的类型,第二个参数,一般为一个序列。很少见到代码输出是中实现堆排序的模块。这里主要看一下优先级队列定义优先级比较输出
array
array 定义了一个非常类似list的模块,其array 函数接受两个参数,第一个参数是预先定义好的类型,第二个参数,一般为一个序列。 很少见到
代码:
import array a = array.array("b",b"abcd") print(a) print(a[0])
输出:
array("b", [97, 98, 99, 100]) 97heapq
heapq 是python中实现堆排序的模块。
from heapq import * import random # 创建一个堆排序 data = [] for i in range(10): heappush(data,random.randint(1,20)) print(data) # 使用 heappop 移除最小的元素 small_num = heappop(data) print(small_num) print("pop移除最小元素后: ",data) # 使用heapreplace替换最小元素,会先执行pop,然后replace n = heapreplace(data,100) print(n) print("执行replace后:",data) # n个最大 / n个最小 lagest = nlargest(3,data) small = nsmallest(3,data) print("3个最大的值:",lagest) print("3个最小的值:",small)
输出
[2, 3, 8, 7, 4, 18, 12, 17, 16, 13] 2 pop移除最小元素后: [3, 4, 8, 7, 13, 18, 12, 17, 16] 3 执行replace后: [4, 7, 8, 16, 13, 18, 12, 17, 100] 3个最大的值: [100, 18, 17] 3个最小的值: [4, 7, 8]queue
队列,在线程一节有总结过,有先进先出队列,也有优先级队列,队列结合线程,可以保证线程之间通信的安全。这里主要看一下优先级队列
from queue import PriorityQueue import threading import functools Q = PriorityQueue() @functools.total_ordering class Job: def __init__(self,priority,desc): self.priority = priority self.desc = desc return # 定义优先级比较 def __eq__(self,other): try: self.priority == other.priority except AttributeError as e: return NotImplemented def __lt__(self,other): try: self.priority < other.priority except AssertionError: return NotImplemented def worker(): while not Q.empty(): item = Q.get() import time time.sleep(1) print(item.desc) Q.all_tasks_done if __name__ == "__main__": Q.put(Job(3,"mid job")) Q.put(Job(10,"important job")) Q.put(Job(1,"low job")) ts = [threading.Thread(target=worker),threading.Thread(target=worker)] for t in ts: t.start() t.join()
输出
important job mid job low job
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/42993.html
摘要:模块更新时部分不需被替换的模块,检测到或参数变化增加移除或修改参数时触发,如所有页面的部分总是不变,此时它将不会被替换。模块函数将在模板指令与状态数据中讲解继续学习下一节教程模板指令与状态数据也可回顾上一节教程启动路由 正如它的名字,模块用于amaplejs单页应用的页面分割,所有的跳转更新和代码编写都是以模块为单位的。 定义一个模块 一个模块由标签对包含,内部分为template模板...
摘要:模块更新时部分不需被替换的模块,检测到或参数变化增加移除或修改参数时触发,如所有页面的部分总是不变,此时它将不会被替换。模块函数将在模板指令与状态数据中讲解继续学习下一节教程模板指令与状态数据也可回顾上一节教程启动路由 正如它的名字,模块用于amaplejs单页应用的页面分割,所有的跳转更新和代码编写都是以模块为单位的。 定义一个模块 一个模块由标签对包含,内部分为template模板...
摘要:模块更新时部分不需被替换的模块,检测到或参数变化增加移除或修改参数时触发,如所有页面的部分总是不变,此时它将不会被替换。模块函数将在模板指令与状态数据中讲解继续学习下一节教程模板指令与状态数据也可回顾上一节教程启动路由 正如它的名字,模块用于amaplejs单页应用的页面分割,所有的跳转更新和代码编写都是以模块为单位的。 定义一个模块 一个模块由标签对包含,内部分为template模板...
阅读 2059·2021-11-23 09:51
阅读 3352·2021-09-28 09:36
阅读 1119·2021-09-08 09:35
阅读 1757·2021-07-23 10:23
阅读 3257·2019-08-30 15:54
阅读 2998·2019-08-29 17:05
阅读 438·2019-08-29 13:23
阅读 1293·2019-08-28 17:51