总结

作者: shuffle笑 | 来源:发表于2018-12-02 19:49 被阅读0次

    创建一个队列:queue_obj = queue.Queue(maxsize=30)

    maxsize :表示允许存储的最

    (FIFO) : 对列--先进先出

    存值 : queue_obj.put( )

    取值 : queue_obj.get( )

    获取队列的大小 : queue_obj.qsize( )

    判断队列是否满 : queue_obj.full( )

    判断队列是否为空 : queue_obj.empty()

    # 注意 : 队列是线程安全的,list,dict 是非线程安全的,使用的时候最好使用线程锁

    多线程

    什么是多任务:同时执行多个任务 例如:同时打开微信,QQ,word,优酷,浏览器

    同时执行--并行

    单核同时执行的任务数量只有一个,但是看上去像是在执行多个任务,是          因为切换的间隔时间级短

    多核cpu:同时可以执行多个任务,假如任务量超过核心数,在某个核心下  任务会交替执行

    并发和并行的概念:

    并发:单核cpu同时执行多个任务,任务是同时发起的,但是并不是同时执行,而是交替执行

    并行:任务数量小于或等于核心数,这个时候每一个核心都在执行任务,任务是同时执行的,

    实现多任务的手段(方式):

    1.多线程

    2.多进程

    3.协程

    线程之间的操作是无序的

    一个线程下面有一个主线程

    线程:相当于打开一个浏览器

    进程:相当于在浏览器里面打开多个窗口

      启动线程: thread.start()

      添加join的目的:为了让任务队里中的所有请求都执行完毕

      线程锁:threadlock = threading.Lock()

    进程池

    导入    from multiprocessing import Pool

    创建一个进程池:pool = Pool()

    pool.apply()  同步的方法,执行效率比较低

    apply_async  是一个异步方法,可以提高任务执行的效率

    func,对应的任务的函数名称

    args=(),传递参数(元组)

    kwds={}, 传递参数(字典)

    callback=None,(执行成功后的回调)

    error_callback=None,(执行错误之后的回调)

    关闭进程池:pool.close  pool.join():join方法 让进程池中的任务执行完毕后,回到主线程继续执行  pool.submit(): 向进程池中添加任务  .add_done_callback():添加回调方法  pool.shutdown():执行了join 方法    使用manage().Queue() 创建一个队列,可以实现在进程池的进程中实现数据的共享(通讯)  q = Manger().Queue()

    相关文章

      网友评论

          本文标题:总结

          本文链接:https://www.haomeiwen.com/subject/umlscqtx.html