Django 中使用流响应处理视频


起步

利用 html5 的 <video> 标签可以播放:

<video width="320" height="240" controls>
  <source src="/static/video/demo.mp4" type="video/mp4">
  您的浏览器不支持Video标签。
</video>

但是这样的方式,视频中的进度条无法使用,而且以静态文件方式返回的话,后台的程序会占用大量的内存。

使用响应流的方式能很好的解决这两个问题。


JS异步下载按序执行


前言

前端优化有个原则,叫资源懒加载。

对于某些js资源,我们在页面load前并不需要用到,加载反而会影响到首屏速度。

把这些js放到 load 后进行加载,我们称之为js异步加载。


TensorRT4.0 Aanconda3.6安装使用(一)


  TensorRT是Nvdia推出的专门针对部署阶段进行加速的驱动,可用于加速模型推断,提供C++和Python接口,支持tensorflow和caffe框架,目前最新版本是4.0。

  1. 安装

  我的环境是ubuntu Server 16 , anaconda3.6(官方推荐的python版本是2.7或3.5),CUDA9.0+cuDNN7.1(必要)。

  首先下载TensorRT4.0的安装包,我选择的是基于cuda9.0的tar格式安装包。

  解压文件:

 tar -xzvf TensorRT-4.0.1.6.Ubuntu-16.04.4.x86_64-gnu.cuda-9.0.cudnn7.1.tar.gz

修改本地环境变量:

 vim ~/.bashrc

  添加 :

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:~/TensorRT-4.0.1.6/lib:/usr/local/cuda-9.0/lib64"

刷新生效:

 source ~/.bashrc

  然后安装python库:

cd ~/TensorRT-4.0.0.16/python 
pip install tensorrt-4.0.0.16-cp35-cp35mu-linux_x86_64.whl

  如果无法安装,请把文件名修改为:tensorrt-4.0.0.16-cp36-cp36mu-linux_x86_64.whl

  用同样的方法安装UFF,graphsurgeon的python安装包

   cd ~/TensorRT-4.0.1.6/uff
   cd ~/TensorRT-4.0.1.6/graphsurgeon

  import tensorrt as trt 测试python版本安装是否正确。由于是python3.6版本的,所以会无法导入某些包。我的处理办法是修改库目录的.so文件名:

cd ~/anaconda3/lib/python3.6/site-packages/tensorrt

  搜索.so文件,将例如_nv_utils_bindings.cpython-35m-x86_64-linux-gnu.so修改为_nv_utils_bindings.cpython-36m-x86_64-linux-gnu.so即可解决问题。

  最后测试C++接口:

cd ~/TensorRT-4.0.1.6/targets/x86_64-linux-gnu/samples/sampleMNIST
make CUDA_INSTALL_DIR=/usr/local/cuda
cd ~/TensorRT-4.0.0.16/bin
./sample_mnist

  输出:

捕获.JPG

  到此TensorRT安装成功。

官方文档:https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html


优雅地改进 Django 中的模板碎片缓存


起步

Django 的缓存体系提供了模板片段缓存:

{% load cache %}
{% cache 500 sidebar %}
    .. sidebar ..
{% endcache %}

但使用这个模板缓存还是需要每次都把需要的变量 sidebar 传给模板,不然当缓存过期时碎片是空白的。于是就需要的视图中获取这些数据:

def test_view(request):
    # code...
    sidebar = get_data()
    return render(reqeust, 'test_view.html', {'sidebar': sidebar})

如果这个数据获取的过程比较耗时,那么这个碎片缓存形同虚设。