随笔分类 -  并发编程

摘要:协程 协程: 是操作系统不可见的 协程本质就是一条线程 多个任务在一条线程上来回切换 利用协程这个概念实现的内容 : 来规避IO操作,就达到了我们将一条线程中的io操作降到最低的目的 切换 并 规避io 的两个模块: gevent = 利用了 greenlet 底层模块完成的切换 + 自动规避io的 阅读全文
posted @ 2020-07-27 10:04 爱浪的跳蚤 阅读(78) 评论(0) 推荐(0) 编辑
摘要:池 什么是池? 要在程序开始的时候,还没提交任务先创建几个线程或者进程 放在一个池子里,这就是池 为什么要用池? 如果先开好进程/线程,那么有任务之后就可以直接使用这个池中的数据了 并且开好的线程或者进程会一直存在在池中,可以被多个任务反复利用 这样极大的减少了开启\关闭\调度线程/进程的时间开销 阅读全文
posted @ 2020-07-27 10:03 爱浪的跳蚤 阅读(142) 评论(0) 推荐(0) 编辑
摘要:队列 Queue fifo 先进先出的队列 import queue # 线程之间数据安全的容器队列 from queue import Empty # 不是内置的错误类型,而是queue模块中的错误 # q = queue.Queue(4) # fifo 先进先出的队列 # # q.get() # 阅读全文
posted @ 2020-07-26 11:59 爱浪的跳蚤 阅读(69) 评论(0) 推荐(0) 编辑
摘要:互斥锁递归锁及死锁现象 from threading import Lock,RLock # Lock 互斥锁 效率高 # RLock 递归(recursion)锁 效率相对低 l = Lock() l.acquire() print('希望被锁住的代码') l.release() rl = RLo 阅读全文
posted @ 2020-07-26 11:52 爱浪的跳蚤 阅读(220) 评论(0) 推荐(0) 编辑
摘要:线程数据不安全现象 from threading import Thread n = 0 def add(): for i in range(500000): global n n += 1 def sub(): for i in range(500000): global n n -= 1 t_l 阅读全文
posted @ 2020-07-26 11:37 爱浪的跳蚤 阅读(87) 评论(0) 推荐(0) 编辑
摘要:守护线程 import time from threading import Thread def son(): while True: print('in son') time.sleep(1) def son2(): for i in range(3): print('in son2 ****' 阅读全文
posted @ 2020-07-26 11:05 爱浪的跳蚤 阅读(64) 评论(0) 推荐(0) 编辑
摘要:线程 Thread 线程 :能被操作系统调度(给CPU执行)的最小单位 数据共享,操作系统调度的最小单位,可以利用多核,操作系统调度,数据不安全,开启关闭切换时间开销小 在CPython中的多线程 - 节省io操作的时间 gc 垃圾回收机制 线程 引用计数 +分代回收 全局解释器锁的出现主要是为了完 阅读全文
posted @ 2020-07-26 10:53 爱浪的跳蚤 阅读(66) 评论(0) 推荐(0) 编辑
摘要:进程之间通信(IPC) Inter Process communication 基于文件 :同一台机器上的多个进程之间通信 Queue 队列 基于socket的文件级别的通信来完成数据传递的 基于网络 :同一台机器或者多台机器上的多进程间通信 第三方工具(消息中间件) memcache redis 阅读全文
posted @ 2020-07-23 17:04 爱浪的跳蚤 阅读(178) 评论(0) 推荐(0) 编辑
摘要:锁-lock import time from multiprocessing import Lock,Process def func(i,lock): lock.acquire() # 拿钥匙 print('被锁起来的代码%s'%i) lock.release() # 还钥匙 time.slee 阅读全文
posted @ 2020-07-23 16:50 爱浪的跳蚤 阅读(134) 评论(0) 推荐(0) 编辑
摘要:守护进程 p.daemon = True 主进程会等待所有的子进程结束,是为了回收子进程的资源 守护进程会等待主进程的代码执行结束之后再结束,而不是等待整个主进程结束. 主进程的代码什么时候结束,守护进程就什么时候结束,和其他子进程的执行进度无关 import time from multiproc 阅读全文
posted @ 2020-07-23 12:45 爱浪的跳蚤 阅读(110) 评论(0) 推荐(0) 编辑
摘要:使用多进程并发的socketserver server端: import socket from multiprocessing import Process def talk(conn): while True: msg = conn.recv(1024).decode('utf-8') ret 阅读全文
posted @ 2020-07-19 15:25 爱浪的跳蚤 阅读(120) 评论(0) 推荐(0) 编辑
摘要:multiprocessing模块-Process # multiple 多元化的 # processing 进程 # multiprocessing 多元的处理进程的模块 仔细说来,multiprocess不是一个模块而是python中一个操作、管理进程的包。 之所以叫multi是取自multip 阅读全文
posted @ 2020-07-19 15:19 爱浪的跳蚤 阅读(158) 评论(0) 推荐(0) 编辑
摘要:进程的三状态及进程调度算法算法 在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。 (1)就绪(Ready)状态 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态 阅读全文
posted @ 2020-07-19 14:12 爱浪的跳蚤 阅读(353) 评论(0) 推荐(0) 编辑
摘要:并发编程基本概念 I/O操作 相对内存来说 输入Input输出Output 输入是怎么输入 :键盘\input\read\recv 输出是怎么输出 :显示器 打印机 播放音乐\print\write\send 文件操作 :read write 网络操作 😒end recv recvfrom 函数 阅读全文
posted @ 2020-07-17 19:07 爱浪的跳蚤 阅读(100) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示