随笔分类 -  Python

摘要:https://www.cnblogs.com/alex3714/p/5474411.html 1、冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到 阅读全文
posted @ 2018-09-14 21:00 四十不惑的编程之路 阅读(111) 评论(0) 推荐(0)
摘要:server.py client.py 阅读全文
posted @ 2018-08-19 20:06 四十不惑的编程之路 阅读(166) 评论(0) 推荐(0)
摘要:client.py client.py 阅读全文
posted @ 2018-08-19 20:01 四十不惑的编程之路 阅读(159) 评论(0) 推荐(0)
摘要:# 协程 协作 非抢占式 编程者自己调度 # 1、通过生成器 import time def consumer(name): # 这是一个生成器 print("--->ready to eat baozi...") while True: new_baozi = yield print("[%s] is eating baozi %s" ... 阅读全文
posted @ 2018-08-19 01:49 四十不惑的编程之路 阅读(118) 评论(0) 推荐(0)
摘要:# 进程池 内部维护一个进程序列,当使用时,则去进程池获取一个进程,如果进程池序列没有可供使用的进程,那么程序就等待,直到进程池中有可用进程为止。 # 进程池中有两个方法 apply表示同步方法 apply_async表示异步方法 from multiprocessing import Pool import time, os def foo(i): time.sleep(1) ... 阅读全文
posted @ 2018-08-19 00:29 四十不惑的编程之路 阅读(139) 评论(0) 推荐(0)
摘要:# 进程的同步 (类似于线程的同步锁,同一时刻只能一个进程运行) from multiprocessing import Process, Lock import time def f(l, i): with l: time.sleep(1) print('helloworld %s' % i) # 上面with l: 相当于 # l.... 阅读全文
posted @ 2018-08-19 00:03 四十不惑的编程之路 阅读(151) 评论(0) 推荐(0)
摘要:# 进程间通讯 # 1、进程对列multiprocessing.Quere import multiprocessing, time def foo(q): time.sleep(1) print('son process', id(q)) q.put(123) q.put('alex') if __name__ == '__main__': q ... 阅读全文
posted @ 2018-08-18 23:45 四十不惑的编程之路 阅读(635) 评论(0) 推荐(0)
摘要:# 多进程调用(大部分与多线程的操作一样) # 调用方式1 from multiprocessing import Process import time def f(name): time.sleep(1) print('hello', name, time.ctime()) if __name__ == '__main__': p_list = [] ... 阅读全文
posted @ 2018-08-18 22:39 四十不惑的编程之路 阅读(405) 评论(0) 推荐(0)
摘要:# 生产者消费者模型 # 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程 # 如果生产者速度快而消费者处理速度慢,或生产者处理速度慢而消费者处理速度快,这样就会发生等待 # 为了解决这个问题于是就引入了生产者和消费者模式 # 生产者消费者模式是通过一个容器来解决生产者与消费者强耦合问题 # 生产者和消费者不直接通读,而通过阻塞队列来进行通讯,生产者—阻塞对列—消费者 # 阻塞队... 阅读全文
posted @ 2018-08-18 21:46 四十不惑的编程之路 阅读(139) 评论(0) 推荐(0)
摘要:# 队列 一种数据结构(多线程利器) import queue # 导入对列模块 q = queue.Queue() # 创建一个对列对象,先进先出 # q = queue.Queue(3) # 创建一个对列对象,3表示队列中只能有3个值 # q = queue.LifoQueue() # 创建一个对列对象,后进先出 # q = queue.PriorityQueue # 创... 阅读全文
posted @ 2018-08-18 21:02 四十不惑的编程之路 阅读(190) 评论(0) 推荐(0)
摘要:# 信号量 也是同步锁,可用来控制线程的并发数 import threading, time class MyThread(threading.Thread): def run(self): if semaphore.acquire(): # 同时运行五个线程,acquire()放一个进程进去计数器-1 print(self.name) ... 阅读全文
posted @ 2018-08-18 20:28 四十不惑的编程之路 阅读(105) 评论(0) 推荐(0)
摘要:# 同步对象(Event) import threading, time class Boss(threading.Thread): def run(self): print('Boss:今晚大家都要加班到22:00') print(event.isSet()) # False 没有设定标志位 event.set() # 设置了标志... 阅读全文
posted @ 2018-08-18 20:13 四十不惑的编程之路 阅读(179) 评论(0) 推荐(0)
摘要:# 并发&并行 同步&异步 GIL 任务 同步锁 死锁 递归锁 # 并发:是指系统具有处理多个任务(动作)的能力 # 并行:是指系统具有 同时 处理多个任务(动作)的能力 # 同步:当进程执行到一个IO(等待外部数据)的时候,需要等待外部数据接收完 # 异步:当进程执行到一个IO(等待外部数据)的时候,不需要等待外部数据接收完,还可以做其它的处理 # GIL: 全局解释器锁 在pytho... 阅读全文
posted @ 2018-08-18 01:11 四十不惑的编程之路 阅读(272) 评论(0) 推荐(0)
摘要:# 进程:本质上就是一个程序在一个数据集上的一次动态执行过程(抽象的概念) # 进程一般由程序、数据集(程序运行过程中所需要使用的资源)、进程控制块(记录进程的外部特征,描述进程的执行变化过程)三部分组成 # 进程是最小的资源单位 # 线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干一样事的缺陷,使到进程内并发成为可能# 线程:是最小的执行单位 # 进程与线程的联... 阅读全文
posted @ 2018-08-17 23:14 四十不惑的编程之路 阅读(247) 评论(0) 推荐(0)
摘要:摘自:http://www.cnblogs.com/linhaifeng/articles/6129246.html#_label14 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加盐的方式来实现 server.py client.py 阅读全文
posted @ 2018-08-16 10:49 四十不惑的编程之路 阅读(282) 评论(0) 推荐(0)
摘要:# socketserver 模块的构成 # server类:处理链接;request类:处理通信 import socketserver # server类: # BaseServer # TCPServer(BaseServer) # UDPServer(TCPServer) # Unix系统 # UnixStreamServer(TCPServer) # UnixDatagramServe... 阅读全文
posted @ 2018-08-16 00:47 四十不惑的编程之路 阅读(132) 评论(0) 推荐(0)
摘要:server.py client.py udp服务端(不常用) 阅读全文
posted @ 2018-08-15 23:43 四十不惑的编程之路 阅读(143) 评论(0) 推荐(0)
摘要:自定义报头 阅读全文
posted @ 2018-08-15 23:06 四十不惑的编程之路 阅读(280) 评论(0) 推荐(0)
摘要:server.py client.py 阅读全文
posted @ 2018-08-15 22:11 四十不惑的编程之路 阅读(191) 评论(0) 推荐(0)
摘要:server.py client.py 阅读全文
posted @ 2018-08-15 19:39 四十不惑的编程之路 阅读(746) 评论(0) 推荐(0)