【问题标题】:Threads of one process in parallel execution一个进程的线程并行执行
【发布时间】:2019-04-19 19:41:41
【问题描述】:

我知道,线程存在于进程的边界:每个进程至少有1个线程,没有进程就不能存在线程;线程共享内存而进程不共享(没有特殊操作)等等。我们也可以通过让多个进程同时执行来加载 CPU 内核。 但是我们可以一次执行同一个进程的多个线程(我的意思是真正的并行执行,而不是伪并行),如果可以的话,它是否比使用多个进程更好,为什么? 谢谢你的回答!

【问题讨论】:

  • 如果您的机器有多个内核,为什么不呢。更好,因为与进程相比,线程的开销更低。

标签: multithreading parallel-processing multiprocessing


【解决方案1】:

线程基本上是轻量级进程。 OS线程可以并行执行,真正的并行执行只需要多个CPU核。

线程具有较低的隔离性,因为它们共享内存并且可以破坏彼此的内存,这与进程不同。好处是它们通常具有较少的元数据,并且创建起来更容易/更快,因此您可以同时运行更多的元数据,而不是进程。

【讨论】:

  • 但是有没有多处理比多线程更好的任务呢? (我知道的唯一任务是使用多个进程绕过 python 的 GIL)
  • @violetapple,这是您可能选择创建新进程而不是新线程的一个原因:您可以设计一个系统,在该系统中可以安全地杀死一些不可信或不可靠的进程。几乎不可能构建一个系统,在其中一个线程被杀死后允许其他线程运行是安全的。
  • @SolomonSlow 谢谢,我不知道。现在我可以睡着了:D
  • 糟糕!我的意思是说,“......安全地允许 同一进程中的其他线程在一个线程 该进程中被杀死后运行。”
猜你喜欢
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 2023-01-09
  • 1970-01-01
  • 2010-10-14
相关资源
最近更新 更多