多线程、并行、多进程、异步、同步

多线程和并行的理解及区别


由于需要,最近要用到dppo(Distributed Proximal Policy Optimization)算法。
Google deepmind论文中多个机器人传递给中央大脑的是在不同环境收集数据的梯度gradient,然后中央大脑利用得到的梯度进行更新;
而openai的文论用的是单线程,莫烦将这两个结合,写出了多线程的DPPO算法,多个机器人将自己的transition传递给中央大脑,而非gradient,然后中央大脑根据多个机器人得到的多个经验,计算梯度,进而更新网络参数,这也是一种打乱数据之间相关性的方法。

1、什么是多线程

多线程(multithreading),是指从软件或者硬件上实现多个线程 并发执行 的技术。具有多线程能力的计算机,因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。

多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提系统的效率。线程是在同一时间需要完成多项任务的时候实现的。

实现多线程是采用一种并发执行机制。

并发执行机制原理:简单来说就是把一个处理器划分为若干个短的时间片,每个时间片依次轮流地执行处理各个应用程序,由于一个时间片很短,相对于一个应用程序来说,就好像是处理器在为自己单独服务一样,从而达到多个应用程序在同时进行的效果。

多线程就是把操作系统中的这种并发执行机制原理运用在一个程序中,把一个程序划分为若干个子任务,多个子任务并发执行,每一个任务就是一个线程,这就是多线程程序。

更多的线程需要更多的内存空间。

2、什么是并行

并行(Parallel):当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
这里面有一个很重要的点,那就是系统要有多个CPU才会出现并行。在有多个CPU的情况下,才会出现真正意义上的『同时进行』。
并发是指在一段时间内宏观上多个程序同时运行。并行指的是同一个时刻,多个任务确实真的在同时运行。

<<区别>>
一个人同时做多件事情,就是并发,并发的多个任务之间是相互抢占资源的;
多个人同时做多件事情,就是并行,并行的多个任务之间是不互相抢占资源的。只有在多CPU 的情况中,才会发生并行,否则,看似同时发生的事情,其实都是并发执行的。

举个例子:
我们两个人在吃午饭。你在吃饭的整个过程中,吃了米饭、吃了蔬菜、吃了牛肉。吃米饭、吃蔬菜、吃牛肉这三件事其实就是并发执行的。对于你来说,整个过程中看似是同时完成的的。但其实你是在吃不同的东西之间来回切换的。

还是我们两个人吃午饭。在吃饭过程中,你吃了米饭、蔬菜、牛肉。我也吃了米饭、蔬菜和牛肉。我们两个人之间的吃饭就是并行的。两个人之间可以在同一时间点一起吃牛肉,或者一个吃牛肉,一个吃蔬菜。之间是互不影响的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线程是操作系统能够进行运算调度的最小单位,它是进程中的一个实体。线程可以被操作系统独立地进行调度和执行,并与同一进程中的其他线程共享进程的资源。 首先,串行线程是指多个线程按照顺序依次执行,一个线程的执行必须在前一个线程执行完毕之后才能开始。这意味着多个任务无法同时进行,执行效率相对较低。 其次,并行线程是指多个线程同时进行执行,每个线程独立执行自己的任务,互不干扰。这样可以大大提高程序的执行效率。 然后,同步线程是指多个线程之间存在有序的执行关系,每个线程需要等待其他线程执行完毕之后才能开始自己的任务。同步线程可以保证数据的一致性,但容易造成程序的阻塞。 最后,异步线程是指多个线程之间不存在执行的先后顺序,各个线程可以独立执行自己的任务。异步线程可以提高程序的响应速度和并发性,但需要特别注意线程安全问题。 总结起来,线程的执行方式可以分为串行、并行同步和异步四种情况。其中,串行线程按照顺序执行,效率较低;并行线程可以同时进行,提高执行效率;同步线程按照有序关系执行,保证数据一致性;异步线程可以并发执行,提高响应速度。根据具体的应用场景和需求,选择合适的线程模式可以提高程序的执行效率和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值