python多任务之进程介绍多任务之进程介绍
python多任务之进程多任务之进程python进程介绍进程和线程对比进程demoQueue列队进行进程中通信进程池pool
python进程介绍进程介绍
进程
提到进程就需要说下程序,程序是指xx.py,是一个静态的文件。一个程序运行起来后,代码+用到的资源称之为进程,它是操
作系统分配资源的基本单元。例如:qq程序运行后会产生一个qq的进程,qq程序运行两个后就会产生两个qq的进程。
进程和线程对比进程和线程对比
先说一个简单的对比,qq程序运行后会产生一个qq进程,线程就是qq进程的多个聊天窗口。当一个进程运行时,会将源代码
复制一份,而且所占的内存也会复制一份,然后独立运行。线程运行时,多个线程会在一个进程内运行,变量和内存都是共享
的。由此可以看出进程运行所占的资源是高于线程,那么是不是说使用进程就是浪费资源?
举一个例子,比如一条流水线上生产一个东西,刚开始只有10个人,为了提升效率第一次可以再增加10个人,后面为了再增
加效率是不是再增加人呢,流水线位置是有限的,人员工作量也是有限的,人数过多提升效率会有瓶颈,这时候提升效率就需
要增加一条流水线了。流水线相当于进程,工人就先当于线程。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护,而线程正相反。
进程进程demo
进程使用multiprocessor模块,其使用方式和线程差不多,都是先创建线程\进程对象,然后再启动
import multiprocessing
import time
def test1():
for i in range(10):
print("----- 1 -----")
time.sleep(1)
def test2():
for i in range(10):
print("----- 2 -----")
time.sleep(1)
def main():
# 创建进程
p1 = multiprocessing.Process(target=test1)
p2 = multiprocessing.Process(target=test2)
p1.start()
p2.start()
if __name__ == '__main__':
main()
执行效果可以看到函数test1和test2在同时执行