最近学习了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()