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()
原文地址:https://www.cnblogs.com/LCboss/p/12690617.html