加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

进程和线程的区别

发布时间:2021-07-06 06:25:32 所属栏目:大数据 来源: https://www.jb51.cc
导读:进程是资源(cpu、内存等)分配的基本单位,它是程序执行时的一个实例。 线程是程序执行时的最小单位,它是进程的一个执行流。 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常
  • 进程是资源(cpu、内存等)分配的基本单位,它是程序执行时的一个实例。
  • 线程是程序执行时的最小单位,它是进程的一个执行流。
  • 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵
  • 线程是共享进程中的数据的,使用相同的地址空间,因此cpu切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多
  • 进程实现
from multiprocessing import Pool
import time
import random
import os


def work(msg):
    start = time.time()
    print("work{}开始执行,id为{}".format(msg,os.getpid()))
    time.sleep(random.random()*2)
    stop = time.time()
    print("work{}耗时{}.".format(msg,stop-start))

p = Pool()
for i in range(10):
    # 非堵塞运行
    p.apply_async(work,args=(i,))
    # 堵塞进行
    # p.apply(work,))


print("开始")
p.close()
p.join()
print("结束")
  • 线程实现
?
import threading
import os
from time import sleep

def sorry(i):
    print('say sorry  {}'.format(i))
    sleep(1)

if __name__ == '__main__':
    for i in range(1,10):
        t = threading.Thread(target=sorry,))
        t.start()

?

本文首发于python黑洞网,博客园同步更新

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读