进程和线程的区别

  • 进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。
  • 线程是程序执行时的最小单位,它是进程的一个执行流。
  • 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵
  • 线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多
  • 进程实现
  • <code>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, args=(i,))


    print("开始")
    p.close()
    p.join()

    print("结束")/<code>
    • 线程实现

    <code>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, args=(i,))
    t.start()/<code>


    进程和线程的区别


    分享到:


    相關文章: