美文网首页
python缓冲区零复制

python缓冲区零复制

作者: 摸不去的尘 | 来源:发表于2016-11-13 17:36 被阅读111次

通常我们通过网络传送大型字节数据,一般都进行复制、切片、修改等操作,这样操作是非常低效。我们可以通过缓冲区协议对象,实现缓冲区零复制,避免复制、切片等频繁而低效操作。

server.py

import socket

port = 8081
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('', 8081))
while True:
    data, addr = s.recvfrom(1024)
    print "%s bytes from %s" % (len(data), addr)

client1.py

import  socket, time
port = 8081
host = "localhost"
bufsize = 1024

## 没有使用缓冲区对象
data = b'a' * 1024 * 1024 * 10
start = time.time()
while data:
          sent_bytes = s.sendto(data[:bufsize], (host,port))
          data = data[send_bytes]
end = time.time()
print "used_time:  %s"  % (end -start)

client2.py

import  socket, time
port = 8081
host = "localhost"
bufsize = 1024

# memoryview缓冲区协议对象,实现零复制
# memoryview直接引用原内存地址来操作
data =memoryview( b'a' * 1024 * 1024 * 10)
start = time.time()
while data:
          sent_bytes = s.sendto(data[:bufsize], (host,port))
          data = data[send_bytes]
end = time.time()
print "used_time:  %s"  % (end -start)

相关文章

  • python缓冲区零复制

    通常我们通过网络传送大型字节数据,一般都进行复制、切片、修改等操作,这样操作是非常低效。我们可以通过缓冲区协议对象...

  • IO模型

    IO读写 read:把数据从内核进程复制到进程缓冲区 write:把数据从进程缓冲区复制到内核缓冲区 阻塞IO 需...

  • IO流学习总结-字符流

    字符流 复制文件1 通过FileReader和FileWriter实现; 复制文件2 通过缓冲区BufferedR...

  • 2020-03-13-Java

    1.BufferedInputStream和BufferedOutputStream (1)没有缓冲区,去复制文件...

  • NIO复制文件的三种方式对比

    方式一:利用通道完成文件的复制(非直接缓冲区) 运行三次的时间分别为:用通道完成文件的复制(非直接缓冲区)耗时为1...

  • IO流——字节流4种copy方式

    JAVA基本IO流框架 字节流整体可分为带缓冲区的流和不带缓冲区的流可分为逐字节复制的流和逐块复制的流(块其实就是...

  • vim复制粘贴命令

    复制命令y,即yank(提起) y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用yy 复制...

  • 笔记 | 计算机系统基础:09-不得不防的缓冲区溢出攻击!

    零. 课程要点: 缓冲区溢出 缓冲区溢出攻击 缓冲区溢出防范 学完了数据的内存结构,以及函数调用的底层过程,我们就...

  • 学习Vi和Vim编译器_第7版

    一、VI文本编辑器 vi即Visual Editor。vi将要编辑的文件复制到缓冲区、显示缓冲区,存储编辑的结果时...

  • 基于Python的缓冲区分析

    (个人微信号361318358) 前段时间有朋友问破解后的ArcGIS做缓冲区时总是失败,想到Python做缓冲区...

网友评论

      本文标题:python缓冲区零复制

      本文链接:https://www.haomeiwen.com/subject/nbycpttx.html