线程与进程的用法与区别

几乎所有语言在学习的过程中,都会碰到线程和进程的问题,也应该是大部分“程序员”学习后最容易忘记的内容内容,那么他们之间到底有什么不同呢?

1、进程和线程的定义

进程是一个术语,用来描述一组资源和程序所需的内存分配,也就是各种资源的集合、一个程序执行的实例。进程之间独立享用资源。

线程是一堆指令的集合,操作系统调用CPU的最小单位,他是比进程更小的能独立运行的基本单位。所有线程之间共享资源,系统创建好进程后,实际就启动执行了该进程的主线程,主线程终止了,进程也就随之终止,每一个进程至少有一个线程。

2、进程与线程的区别:

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。

1) 第一,一个程序至少有一个进程,一个进程至少有一个线程.

2) 线程的划分尺度小于进程,因此多线程程序的并发性高。

3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。

3、用法

线程案例:

import threading
import time
#线程锁
lock = threading.Lock()

#  我定义的线程类
class MyThread(threading.Thread):

    def __init__(self,num):
        threading.Thread.__init__(self)
        self.num = num

    def run(self):
        # lock.acquire()
        print("Thread--"+self.num,end='\n')
        time.sleep(2)
        # lock.release()


thread_lists =[]
for i in range(100):
    t = MyThread("t"+str(i))
    t.setDaemon(True)   # 设置守护线程
    t.start()
    # t.run()
    thread_lists.append(t)

for t in thread_lists:
    t.join()
    
t1 = MyThread("t1")
t2 = MyThread("t2")

t1.run()
t2.run()

进程案例:

import multiprocessing
import time


def run(n):
    print("进程%s"% str(n))
    time.sleep(1)


if __name__ == "__main__":

    for i in range(10):
        p = multiprocessing.Process(target=run,args=(i,)) #创建多进程
        p.start() #启动多进程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值