子线程内的多处理

Moh*_*dra 5 python multithreading multiprocessing python-multithreading python-multiprocessing

我正在学习多处理和多线程。

据我了解,线程在同一个核心上运行,所以我想知道如果我在子线程中创建多个进程,它们也会被限制在该单个核心上吗?

我正在使用 python,所以这是一个关于该特定语言的问题,但我想知道它与其他语言是否相同?

use*_*414 2

我不是 pyhton 专家,但我希望这就像其他语言一样,因为它通常是操作系统的功能。

过程

进程由操作系统执行,并拥有一个将被执行的线程。这通常是您的程序。您可以在进程内启动更多线程来执行一些繁重的计算或任何您必须执行的操作。但它们属于过程。

线

一个或多个线程由一个进程拥有,并且执行将分布在所有核心上。

现在回答你的问题

当您创建给定数量的线程时,这些线程通常应分布在所有核心上。它们不限于执行 phyton 解释器的核心。即使您从 phyton 代码创建子进程,该进程也可以而且应该在其他内核上运行。

您可以在此处阅读有关基本概念的更多信息: 抢占式多任务处理

有一些不同语言的库将线程抽象为通常称为任务或其他东西的东西。对于这些特殊情况,它们可能只是在创建它们的线程内运行。例如。在 DotNet 世界中,有一个线程和一个任务。人们在谈论任务时常常会误用术语“线程”,该任务通常在其创建的线程内运行。