导入进程包
import multiprocessing
from multiprocessing import Process
准备进程,传递参数
p1 = multiprocessing.Process(target=func,args=(arg1,arg2,),kwargs={})
运行进程
p1.start()
多进程之间不共享全局变量
进程间通信-Queue(消息队列):
# Queue.get([block],[timeout]) [block]表示阻塞,默认为True,同意阻塞;[timeout]表示设置阻塞时长,超长报错
# Queue.get(True,2) 表示阻塞,两秒后不解阻塞则报错
from multiprocessing import Queue
q = Queue(3) # 创建一定容量的队列
q.put("消息1") # 队列放入内容
q.put("消息2")
print(q.full()) # 判断是否满,返回bool
if not q.full(): # 判断是否满,不满才添加
q.put_nowait("消息3")
if not q.empty(): # 判断不空,才取数
for i in range(q.qsize()):
print(q.get_nowait())
查看系统下运行的进程:
ps -aux
python 获取当前进程PID
import os
print(os.getpid())
对比:
进程是系统进行资源分配和调度的一个独立单位
线程是进程內更小的单位,是CPU调度和分派的基本单位