多任务------进程就是把相同的资源复制一份 来进行子进程 总而言之
缺点: 就是最占用内存和cpu 的一种多任务处理方式 优点: 是可以在代码要改(主线程和数据的时候用 专业名词叫做 写时拷贝
import time import multiprocessing def text1 (): while True: print("-----1----") time.sleep(1) def text2 (): while True: print("-----2----") time.sleep(1) def main(): t1 = multiprocessing.Process(target = text1) # 在这里调用multiprocessing的方法 和之前threading的调用方法一样 t2 = multiprocessing.Process(target= text2) t1.start() t2.start() if __name__ == '__main__': main()
比如说向百度云盘 不能让你直接把所有文件下载 而是开通会员先给下载四个 则就要引入队列(和栈相反)
import multiprocessing def download_from_web (q): # 传入实参q 只能用这么多的资源 # 模拟从网上下载数据 data = [11,22,33,44] # 队列中写入数据 for temp in data: q.put(temp) print("下载器已经下载完了数据,并且存入到队列中...") def analise_data(q): # 传入实参q 只能用 q 这么多的资源 # 数据处理 waitting_analysis_data = list() # 从队列中获取数据 while True: data = q.get() waitting_analysis_data.append(data) print(waitting_analysis_data) if q.empty(): break def main(): # 1创建一个队列 q =multiprocessing.Queue(4) # 由于进程中占的资源比较多 所以只分配 4 个队列 # 2创建多个进程,把队列当作实参传送到里面 p1 = multiprocessing.Process(target=download_from_web,args=(q,)) p2 = multiprocessing.Process(target = analise_data,args = (q,)) p1.start() p2.start() if __name__ == '__main__': main()
引入了 multiprocessing 中的 queue 文件 设置了四个进程