zoukankan      html  css  js  c++  java
  • 34 线程的其他方法 队列 线程池 协程

    今日内容:

     

    1 线程的其他方法

     

    2 线程队列 (重点)

     

    3 线程池(重点)

     

    4协程

     

    生成器

     

    Greenlet模块

     

    Gevent模块(重点)

     

     

     

    今日内容回顾:

    线程的其他方法:

    Threading.current_thread() #当前线程对象

    GetName() 获取线程名

    Ident  获取线程id

     

    Threading.Enumerate() #当前正在运行的线程对象的一个列表

    Threading.active_count() #当前正在运行的线程数量

     

    线程队列:(重点)

    Import queue

    先进先出队列:queue.Queue(3)

    先进后出后进先出队列:queue.LifoQueue(3)  

    优先级队列:queue.priorityQueue(3)

      Put的数据是一个元组,元组的第一个参数是优先级数字,数字越小优先级越高,越先被get到被取出来,第二个参数是put进去的值,如果说优先级相同,那么值别忘了应该是相同的数据类型,字典不行

     

    线程池:

    From concurrent_futures import ThreadPoolExecutor,ProcessPoolExecutor

     

    P = ThreadPoolExecutor(4)  #默认的线程个数是cpu个数 * 5

    P = ProcessPoolExecutor(4)  #默认的进程个数是cpu个数

    P.map(f1,可迭代的对象)  #异步执行

    Def f1(n1,n2):

    Print(n1,n2)

    P.submit(f1,11,12)  #异步提交任务

    Res = P.submit(f1,11,12)

     

    Res.result()  #和get方法一样,如果没有结果,会等待,阻塞程序

     

    Shutdown() #close+join,锁定线程池,等待线程池中所有已经提交的任务全部执行完毕

     

     

    今日作业

     

    1. 多线程实现 一个socket并发聊天,就是一个服务端同时与多个客户端进行沟通
    2. 写一个简易的socketserver
    3. 通过线程池做爬虫,通过回调函数来清洗爬取回来的数据,简单写,就是将爬取回来的网页内容,通过正则来匹配一些其中的内容,匹配其中的链接网址

     

    01 线程的其他方法

    02 线程队列

    03 线程池

    04 生成器版协程

    05 greenlet版协程

    06 gevent版真正的协程

    07 线程池回调函数

     

  • 相关阅读:
    杂记
    asp.net preview 5 bug[转]
    jquery笔记
    北京互联网创业团队诚邀英才加盟
    伊瓜苏大瀑布
    log4net udp组件的应用
    Mock介绍
    自写的BackgroundWorker的学习例子
    RegexBuddy使用例子,及Visual Studio中正则使用的请教
    TestDriven.NET2.14.2190(not RTM) last update at 2008723
  • 原文地址:https://www.cnblogs.com/work14/p/10267232.html
Copyright © 2011-2022 走看看