一、线程:
1.创建一个线程方式1
thd = threading.Thread(target=函数, args=(位置参数), kwargs={名字:值})
thd.start()
创建一个线程方式2
class mythread(threading.Thread):
def run():
子线程运行的代码
等待子线程运行完成
thd.join(超时时间)
多线程执行顺序如何?
无序 随机
同一个进程的线程 共享 全局变量
什么是 多线程同步?
协同-按照一定的秩序运行
互斥锁的特点?
保证 任何一个事件点 只有一个线程能够成功申请
如何使用
创建
lock = threading.Lock()
申请
lock.acquire()
释放
lock.release()
2、多任务的应用场景
2. ps -aux 查看当前系统中所有的进程
PID process id 进程ID-操作系统 管理多进程的时候 编号
3. 孤儿进程-父进程挂了子进程还在运行
init接管孤儿进程作为父进程 - 父进程回收子进程资源
僵死进程 - 子进程退出 父进程没有回收子进程的资源 如果需要回收子进程.join()
4. 创建进程
# 创建Process对象
# target指定子进程运行的函数
pro = multiprocessing.Process(target=func, args=(100,))
# 启动子进程的创建和执行
pro.start()
5. 队列
创建 q = Queue(队列最大长度)
放 q.put(data,True,-1) = q.put(data)
q.put(data,True,10)
q.put(data,False) = q.put_nowait(data)
取
取到的数据 = q.get() == q.get(True,-1)
q.get(True, 10)
q.get_nowait() = q.get(False)
1.创建一个线程方式1
thd = threading.Thread(target=函数, args=(位置参数), kwargs={名字:值})
thd.start()
创建一个线程方式2
class mythread(threading.Thread):
def run():
子线程运行的代码
等待子线程运行完成
thd.join(超时时间)
多线程执行顺序如何?
无序 随机
同一个进程的线程 共享 全局变量
什么是 多线程同步?
协同-按照一定的秩序运行
互斥锁的特点?
保证 任何一个事件点 只有一个线程能够成功申请
如何使用
创建
lock = threading.Lock()
申请
lock.acquire()
释放
lock.release()
2、多任务的应用场景
爬虫
3、GIL 全局解释器锁-互斥锁 cpython->C语言的内存管理 不能同时被多个线程 进行内存的管理二. 进程
1.概念:
进程是操作系统进程资源分配的基本单位
----> 进程间是独立的数据空间 不共享全局变量2. ps -aux 查看当前系统中所有的进程
PID process id 进程ID-操作系统 管理多进程的时候 编号
3. 孤儿进程-父进程挂了子进程还在运行
init接管孤儿进程作为父进程 - 父进程回收子进程资源
僵死进程 - 子进程退出 父进程没有回收子进程的资源 如果需要回收子进程.join()
4. 创建进程
# 创建Process对象
# target指定子进程运行的函数
pro = multiprocessing.Process(target=func, args=(100,))
# 启动子进程的创建和执行
pro.start()
5. 队列
创建 q = Queue(队列最大长度)
放 q.put(data,True,-1) = q.put(data)
q.put(data,True,10)
q.put(data,False) = q.put_nowait(data)
取
取到的数据 = q.get() == q.get(True,-1)
q.get(True, 10)
q.get_nowait() = q.get(False)