zoukankan      html  css  js  c++  java
  • python--进程

    最近学习了python中的进程,简单总结下笔记

    1、首先什么是进程?

    进程是资源分配的单位,比如打开一个qq是一个进程,打开2个qq是两个进程

    2、在python中如何创建进程

    from multiprocessing import Process
    import os
    
    def work():
        print("------这个是任务-----{}".format(os.getpid()))
    
    
    if __name__ == '__main__':
        p = Process(target=work)
        p1 = Process(target=work)
        p1.start()
        p.start()

    执行结果:

    ------这个是任务-----42860
    ------这个是任务-----47156

    可以看出这是两个进程

    3、创建进程池

    from multiprocessing import Pool
    import os
    import time
    
    
    def work():
        print("------这个是任务-----{}".format(os.getpid()))
        time.sleep(1)
    
    
    if __name__ == '__main__':
        pool = Pool(5)  # 创建进程池,里面有5个进程
        for i in range(10):
            pool.apply_async(func=work)
    
        pool.close()  # 关闭进程池,让其不再接受任务
        pool.join()

    4、如何使用进程池中的队列

    import os
    from multiprocessing import Pool, Manager
    import time
    
    a = 0
    
    
    def work(q):
        cc = q.get()
        print("-----------这个是任务{}-------{}".format(cc, os.getpid()))
        time.sleep(1)
    
    
    if __name__ == '__main__':
        p = Pool(5)
        q = Manager().Queue()  # 使用进程池中的队列
        for i in range(10):
            q.put(a)  # 添加任务到队列中去
            a += 1
        for n in range(q.qsize()):  # 循环队列里面的任务数
            p.apply_async(func=work, args=(q,))  # 使用进程池中的进程来执行队列中的任务
        p.close()  # 关闭进程池,不再接受执行任务
        p.join()
  • 相关阅读:
    素数推断算法(高效率)
    Hibernate的fetch
    TRIZ系列-创新原理-22-变害为利原理
    Offer是否具有法律效力?
    浅谈C++多态性
    C语言scanf函数详解
    大话设计模式之原型模式
    Android源码文件夹结构
    简单的REST的框架实现
    android startActivityForResult的用法
  • 原文地址:https://www.cnblogs.com/LCboss/p/12690617.html
Copyright © 2011-2022 走看看