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实际上不使用。
    """
  • 相关阅读:
    CAS实战の简介
    高效程序员的45个习惯の排除万难奋勇前进
    高效程序员的45个习惯の对事不对人
    高效程序员的45个习惯の欲速则不达
    高效程序员的45个习惯の正确做事
    Java中Runnable和Thread的区别
    Intellij IDEA 14的注册机(Java版)
    session token防表单重提
    maven下@override标签失效
    Oracle sql 优化の索引监控
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12210550.html
Copyright © 2011-2022 走看看