![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
一逍倾城
Python学者 学习中
展开
-
..协程.
生成器 通过生成器来实现对函数的反复输入和输出,这样的输入和输出同样可以用来传递数据 def func(): while True: y = yield # 接收数据 print(y) a = func() # 必须要通过next()预激活,先到达yield位置,不然接收不到send发送过来的数据 next(a) # 发送数据 a.send(111) a.send(222) a.send(333) 生成器实现协程 import time # 消费者:接收数据,原创 2021-06-24 21:43:48 · 80 阅读 · 0 评论 -
进程池与线程池
可重复利用的线程 队列计数器 队列自己内部有一个计数器,当计数为0时,join不会阻塞,否则就会阻塞 利用生产者与消费者模型,实现线程的重复利用。 主进程可以看成生产者,主要产生任务 线程作为消费者主要处理任务 import queue import threading import time class MyThred(threading.Thread): def __init__(self): super().__init__() self.daemon =原创 2021-06-22 09:52:08 · 82 阅读 · 0 评论 -
*并发通信*
进程通信隔离 进程间的隔离,可以看到在不同进程中,即使声明了全局变量,也还是没有作用 import multiprocessing var = 10 def func(): global var var += 1 print('inner:', var) return var p1 = multiprocessing.Process(target=func) p1.start() p1.join() print('outer:', var) 进程信息共享 Mana原创 2021-06-21 09:14:26 · 91 阅读 · 0 评论 -
线程与进程补充
面向对象编程 在使用多进程或者多线程时,对应模块可以直接使用,也可以继承之后,定制使用 import multiprocessing import redis class RedisProcess(multiprocessing.Process): def __init__(self, db, key, value): super().__init__() # 把实例化的对象变成进程对象 self.connect = redis.Redis(db=db) #原创 2021-06-20 07:58:46 · 48 阅读 · 0 评论 -
进程与线程
多进程适合计算密集型的情形 多线程适合IO密集型的场景 单一进程 使用睡眠来模拟耗时操作,查看真个程序的运行时间 import time def new_time(): #格式化时间,获取当前准确时间 return time.asctime(time.localtime(time.time())) def fun(): print('inner-start',new_time()) time.sleep(5) #休眠5秒钟,模拟耗时操作 print('inn原创 2021-06-20 07:51:56 · 59 阅读 · 0 评论 -
非阻塞套接字与IO多路复用
非阻塞IO 利用异常处理来处理非阻塞IO产生的异常 import socket server = socket.socket() # 生成一个socket对象 server.setblocking(False) # 设置非阻塞套接字 server.bind(('127.0.0.1', 5959)) # 绑定IP 端口 server.listen(5) # 监听数量 也就是允许连接客户端数量 # 一直接收 避免阻塞 while True: try: conn, addr =原创 2021-06-18 08:32:07 · 120 阅读 · 0 评论 -
传输模型与套接字
本文使用环境为 pycharm远程连接Ubuntu python3.6 本文实现一个简单的客户端和服务端 服务端 import socket server = socket.socket() #生成一个socket对象 server.bind(('127.0.0.1', 8989)) 绑定IP 端口 #print(server) server.listen(5) #监听数量 也就是允许连接客户端数量 conn, addr = server.accept() #对等套接字为一个元祖对象 进行元祖拆包 d原创 2021-06-17 10:18:51 · 60 阅读 · 0 评论