zoukankan      html  css  js  c++  java
  • 多进程技术multiprocessing.py

    """
    多进程multiprocessing模块的使用与多线程threading模块的用法类似。multiprocessing提供了本地和远程的并发性,
    有效地通过全局解释锁(Global Interceptor Lock,GIL)来使用进程(而不是线程)。由于GIL的存在,在CPU密集型的程序当中,
    使用多线程并不能有效地利用多核CPU的优势,因为一个解释器在同一时刻只会有一个线程在执行。
    所以,multiprocessing模块可以充分利用硬件的多处理器来进行工作。它支持UNIX和Windows系统上的运行。
    修改多线程的例子,将threading模块中的Thread方法替换为multiprocesing模块的Process就实现了多进程。
    """
    from time import sleep,ctime
    import multiprocessing
    def super_player(file_,time):
    for i in range(2):
    print("Start playing: %s! %s" %(file_,ctime()))
    sleep(time)

    lists = {"爱情买卖.mp3":3,"阿凡达.mp4":5,"我和你.mp3":4}

    threads = []
    files = range(len(lists))

    for file_,time in lists.items():
    t = multiprocessing.Process(target=super_player,args = (file_,time))
    threads.append(t)

    if __name__ == '__main__':
    #启动进程:
    for i in files:
    threads[i].start()
    for i in files:
    threads[i].join()
    print("end:%s" % ctime())

    """
    我们利用Process对象来创建一个进程。Process对象与Thread对象的用法相同,也有start)、run)、join()等方法。
    multiprocessing.Process(group=None,target=None,name=None,args=(),kwargs={})
    target表示调用对象,args表示调用对象的位置参数元组,kwargs表示调用对象的字典,name为别名,Group实际上不使用。
    """
  • 相关阅读:
    Mongodb_文件存储
    Mongodb_技巧
    Blend_Effect
    WPF_界面_图片/界面/文字模糊解决之道整理
    ASP.NET Boilerplate 深入系列之:概述
    P1280 尼克的任务
    P1802 5倍经验日
    271. 杨老师的照相排列
    P1726 上白泽慧音
    P1983 [NOIP2013 普及组] 车站分级
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12210550.html
Copyright © 2011-2022 走看看