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实现的并行比较

  • 相关阅读:
    数据绑定表达式语法(Eval,Bind区别)
    使用博客园的第一件事 自定义主题
    sql2000 跨服务器复制表数据
    使用UpdatePanel 局部刷新出现中文乱码的解决方法!!
    MMC不能打开文件MSC文件
    sql 日期 、时间相关
    loaded AS2 swf call function in AS3 holder
    Rewrite the master page form action attribute in asp.net 2.0
    100万个不重复的8位的随机数
    flash 中实现斜切变型
  • 原文地址:https://www.cnblogs.com/icxy/p/4516641.html
Copyright © 2011-2022 走看看