`
wooce
  • 浏览: 184151 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

玩转pyuv(译)

 
阅读更多

非逐句译,同时译者wooce添加了其他一些内容。

 

引言

    服务端的Javascript:  node.js近期人气急升。

    node.js的作者做的网络封装库libuv ,   提供了跟libev同样的核心功能,并有些真的不错的libuv独有的好处:

 

  • Windows平台上的高性能IO
  • 异步文件操作
  • 内置的线程池
  • 异步的getaddrinfo
  • 更优雅的使用API。

      等等。

    我寻找libuv的python封装,找到了pyuv:  https://github.com/saghul/pyuv 

 

安装
     不能用Pypi来安装。需要用git下载源码后安装:

 

$ git clone https://github.com/saghul/pyuv.git
$ python setup.py build
$ sudo python setup.py install

示例
    以TCP Echo Server为例, 参见https://github.com/saghul/pyuv/blob/master/examples/echo-server-tcp.py 的代码:
import os
import signal
import threading
import pyuv

def on_client_shutdown(client):
    client.close()
    clients.remove(client)

def on_read(client, data):
    if data is None:
        client.close()
        clients.remove(client)
        return
    data = data.strip()
    if not data:
        return
    client.write(data+os.linesep)
    client.shutdown(on_client_shutdown)

def on_connection(server):
    client = server.accept()
    clients.append(client)
    client.start_read(on_read)

def async_exit(async):
    [c.close() for c in clients]
    async.close()
    signal_h.close()
    server.close()

def signal_cb(sig, frame):
    async.send(async_exit)


print "PyUV version %s" % pyuv.__version__

loop = pyuv.Loop()

async = pyuv.Async(loop)
clients = []

server = pyuv.TCP(loop)
server.bind(("0.0.0.0", 5000))
server.listen(on_connection)

signal_h = pyuv.Signal(loop)
signal_h.start()

t = threading.Thread(target=loop.run)
t.start()

signal.signal(signal.SIGINT, signal_cb)
signal.pause()

t.join()

print "Stopped!"

性能测试
  该Echo Server示例和其他语言及架构实现的Echo server(参考https://github.com/methane/echoserver)的性能测试的结果对比。
   


   测试的详细报告在这里。 
   pyuv的测试结果跟tornado相比的话稍有些慢。pyuv的设计和tornado相似。

参考

joyent/libuv ? GitHub

 

结论

    通过pyuv,可以很容易地在python中使用libuv,而且非常有趣.

    译者wooce注:uevent 是一个在gevent中把libuv作为网络核心的实现,它就是基于pyuv之上的,不过它还是个试验性的project,  主要功能是可用的,但尚未通过所有测试,由于gevent跟libev现在的紧密集成,换成libuv在实现上有所阻碍。

 

  • 大小: 7 KB
分享到:
评论

相关推荐

    pYUV软件pYUV.zip

    pYUV软件是一款专门用于处理YUV和RGB格式图像的工具。在音视频处理领域,YUV和RGB是两种常见的颜色空间表示法,它们在数字图像和视频编码中扮演着重要角色。 首先,我们来详细了解一下YUV和RGB这两种颜色模型。 **...

    PYUV.tar.gz_linux pyuv_linux视频_pYUV 下载_py_pyuv

    PYUV.tar.gzLinux是针对Python开发的一个库,用于在Linux操作系统上处理和播放YUV(YCbCr)格式的视频。PyUV库是Python对libuv的封装,它是一个跨平台的异步I/O库,提供了多种操作系统下的事件循环机制。在本场景中...

    pyuv for windows prebuilt

    标题“pyuv for windows prebuilt”指的是一个专为Windows系统预先构建的Python库pyuv的版本。pyuv是一个Python绑定库,它提供了libuv库的功能,libuv是一个跨平台的异步I/O库,主要用于Node.js项目,但也可用于其他...

    pyuv播放器

    【PyUV播放器】是一款专为Linux平台设计的软件,其主要功能是播放YUV格式的视频文件。在深入探讨PyUV播放器之前,我们首先需要理解YUV格式,这是一种广泛应用于数字视频处理的颜色空间,尤其在压缩视频时,如H.264等...

    pyuv YUV格式查看工具

    【pyuv YUV格式查看工具】是一款专门针对YUV视频格式设计的专业查看工具,由Python语言开发,名为"pyuv"。在数字视频处理领域,YUV格式是一种常见的颜色空间表示方式,尤其在低带宽传输和编码中广泛应用。这款工具...

    pyuv图片/视频播放工具

    找了很久的工具,此工具支持yuv444p yuv420p等格式的图片

    pyuv播放器 Redhat平台

    在ubuntu平台上,pyuv可以播放yuv格式的视频。

    pyuv_0.5-1_i386.deb

    linux下比较好的播放yuv文件的播放器,经过本人实测效果不错,能播放从usb摄像头获取的yuv视频流。

    pyuv_0.7.0-1_amd64_18.04.7z

    《PyUV 0.7.0在Ubuntu 18.04上的应用与解析》 PyUV是一款专门针对Ubuntu操作系统的YUV播放器,版本号为0.7.0,适用于AMD64架构的计算机。在Ubuntu 18.04这个长期支持版上,PyUV已得到验证,能稳定、高效地运行,为...

    PyPI 官网下载 | pyuvdata-2.0.2.tar.gz

    《PyPI官网下载 | pyuvdata-2.0.2.tar.gz:Python库与分布式系统交互的探索》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的Python软件包,供全球的开发者下载和使用。...

    pyuv_0.7.0-1_amd64.deb

    Ubuntu 64位系统下的YUV播放器,可以选择视频尺寸、YUV格式等参数设置。比较方便的工具软件。

    一个视频播放器

    《构建自己的视频播放器——基于MFC的SimplePlayer解析》 在数字媒体技术日新月异的今天,视频播放器已经成为了我们日常生活中不可或缺的一部分。本文将深入探讨一个基于MFC(Microsoft Foundation Classes)实现的...

    Elecard StreamEye Tools

    除了以上功能,Elecard StreamEye Tools还可能包含其他高级特性,如支持不同编码格式的互转、视频质量评估、码率分析等。这些工具对于内容创作者、流媒体服务提供商、硬件制造商以及科研人员来说,都是宝贵的资源,...

    1920x1080_yuv420sp.yuv

    nv12的yuv数据,大小是1920x1080.内容是皮卡丘. 开发要用,找了好久.最后用ffmpeg自己转了一个.

    YUV解析工具

    在标签“pYuv”中,"p"可能代表Planar,这是YUV的一种布局方式,其中Y、U、V分量被分别存储在连续的内存区域,方便处理。这种布局常见于现代视频编码和处理中。 在提供的压缩包子文件“pYUV”中,很可能包含了多个...

    yuv格式图片以及yuv图片查看器

    YUV格式图片是一种常见的视频和图像编码格式,尤其在数字视频处理和计算机视觉领域中广泛应用。这个压缩包包含了几个与YUV格式相关的资源,包括一个YUV图片查看器(yuvplayer.exe)以及多个不同类型的YUV图片样本,...

    libuv-1.37.0.zip

    [pyuv](https://github.com/saghul/pyuv), and [others](https://github.com/libuv/libuv/wiki/Projects-that-use-libuv). ## Feature highlights * Full-featured event loop backed by epoll, kqueue, IOCP, ...

    三种不同的YUV播放器

    本篇文章将详细探讨三种不同的YUV播放器:pyuv.exe、yuvplayer.exe和RawPlayer.exe,以及与它们相关的技术知识。 首先,我们来理解YUV颜色空间。YUV是亮度(Y)和两个色差分量(U和V)的组合,主要用于分离图像的...

    yuv测试文件 420 1080p50 含有10帧数据

    yuv测试文件 420 1080p50 含有10帧数据 yuv测试文件 420 1080p50 含有10帧数据

Global site tag (gtag.js) - Google Analytics