进程 线程

2023-03-04  本文已影响0人  robotframe

多任务,指操作系统能够执行多个任务,每个任务就是一个进程。

使用mulitprocessing模块创建进程

运行结果:

主进程开始

主进程结束

我是子进程

对于简单小任务,通常使用Process(target=test)方法实现多进程。但是如果要处理复杂任务的进程,通常定义一个类,使其集成Process类,每次实例化这个类的时候,就等同于实例化一个进程对象。

如果需要处理多个任务,可以在一个应用程序内使用多个进程,每个进程完成一部分工作。另一种将工作细分为多个任务的方法是使用一个进程内的多线程。Thread线程是操作系统能进行运算调度的最小单位。他被包含在进程之中,一个进程中可以并发多个线程,每个线程并行执行不同的任务。

Python的标准库提供了两个模块,_thread和threading,_thread是低级模块,threading是高级模块,对_thread进行了封装。

一个进程可以有多个线程Thread.

进程之间不能共享数据,只能通过队列,管道等方法实现。

线程之间可以共享数据。

由于线程可以对全局变量随意修改,可能造成多线程之间对全局变量管理的混乱。引入互斥锁的概念。Mutual exclusion,防止多个线程同时读写某一块内存区域。

互斥锁为资源引入一个状态:锁定和非锁定。保证了每次只有一个线程进入读写操作。

mutex = threading.Lock()

mutex.acquire(blocking)

mutex.release()

购买成功,剩余99

购买成功,剩余98

购买成功,剩余97

购买成功,剩余96

购买成功,剩余95

购买成功,剩余94

购买成功,剩余93

购买成功,剩余92

购买成功,剩余91

购买成功,剩余90

上一篇 下一篇

猜你喜欢

热点阅读