多进程
需要其他进程的时候就创建进程类Process的对象
注意:不能直接在一个进程中修改另外一个进程的数据
举例:
from multiprocessing import Process import time data = 10 def download(url): global data data -= 1 print(data) print(f'{url}开始下载') time.sleep(2) print(f'{url}下载结束') if __name__ == '__main__': p1 = Process(target=download, args=('沉默的羔羊',)) p2 = Process(target=download, args=('怦然心动',)) p1.start() p2.start() p1.join() p2.join() print('=========结束=======') print(data)执行结果:
9 沉默的羔羊开始下载 9 怦然心动开始下载 沉默的羔羊下载结束 怦然心动下载结束 =========结束======= 10进程间通信
支持多进程间通信的Queue
举例:
from multiprocessing import Process, Queue import time # 普通队列,可以支持多线程通信 def download(url, q: Queue): print(f'{url}开始下载') time.sleep(2) print(f'{url}下载结束') q.put(f'{url}电影资源') if __name__ == '__main__': q = Queue() p1 = Process(target=download, args=('沉默的羔羊', q)) p2 = Process(target=download, args=('怦然心动', q)) p1.start() p2.start() p1.join() p2.join() print('=========结束=======') print(q.get()) print(q.get())执行结果:
沉默的羔羊开始下载 怦然心动开始下载 沉默的羔羊下载结束 怦然心动下载结束 =========结束======= 沉默的羔羊电影资源 怦然心动电影资源