zoukankan      html  css  js  c++  java
  • Python常见问题及资料收集


    1,字符编码处理: http://bbs.chinaunix.net/thread-1431029-1-1.html


    2,List/Queue/deque/queue

    • queue是多线程中的,使用的栈;由于有全局计时器锁的存在,多线程并不能改善程序性能;线程安全(GIL保证)。
    • multiprocessing.Queue是Python2.6版本引入的,用于实现多线程的一种高性能栈;线程和进程安全。
    • collection.deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈,插入和删除性能完胜queue和Queue,使用c语言实现;线程安全(GIL保证)。

    3,yield和generator

    • generator(生成器),是一个特殊的程序,可以被用作循环的迭代行为。类似于返回值为数组的一个函数,这个函数可以接受参数,可以被调用,但是不同于一般都函数会一次性返回所有数值的数组,生成器一次只产生一个值,这样消耗的内存大大减小,而且允许调用函数可以很快的开始处理前几个返回值。因此,生成器看起来像一个函数,但是表现像一个迭代器。
    • 生成器与迭代协议是密切相关的
    • python提供了两种基本方式来构造生成器:
      • 生成器函数:也是用def来定义,利用yeild关键字一次返回一个结果,阻塞,重新开始。为了支持迭代协议,拥有yeild的函数会被编译成生成器,这类函数被调用时返回一个生成器对象,这个对象支持迭代接口,即成员方法__next()__继续从中断处执行。 
        • # coding
          
          def cube(n):
              for i in range(n):
                  yeild i ** 3
          
          for i in cube(5):
              print i
          
          # output
          0
          1
          8
          27
          64
      • 生成器表达式:返回一个对象,这个对象只有在需要的时候才产生结果  
        • >>> # 列表解析生成列表
          >>> [ x ** 3 for x in range(5)]
          [0, 1, 8, 27, 64]
          >>> 
          >>> # 生成器表达式
          >>> (x ** 3 for x in range(5))
          <generator object <genexpr> at 0x000000000315F678>
          >>> # 两者之间转换
          >>> list(x ** 3 for x in range(5))
          [0, 1, 8, 27, 64]
          >>> # 使用for循环自动发出next()函数,实现自动迭代
          >>> for n in (x ** 3 for x in range(5)): 
                print('%s, %s' % (n, n * n))
          
          0, 0
          1, 1
          8, 64
          27, 729
          64, 4096
          >>> 
          

            

    • 比较。一个迭代器既可以被写成生成器函数,也可以被写成生成器表达式,均支持自动和手动迭代。而且这些生成器只支持一个active迭代,也就是说生成器的迭代器就是生成器本身。

    4,协程、Gevent、Greenlet


    5,multiprocessing、threads实现的并行比较

  • 相关阅读:
    使用servletContext和类加载器加载文件
    servletConfig和servletContext的应用
    java中的正则表达式(一)
    servlet的生命周期
    servlet的基本原理
    java中类加载机制
    java中的动态代理(三)
    Navicat Premium 连接Oracle 数据库
    使用SqlServer2005 Service Broker 和 SqlDependency类提供数据更改的通知
    WebService简单使用
  • 原文地址:https://www.cnblogs.com/icxy/p/4516641.html
Copyright © 2011-2022 走看看