子进程和线程的区别

17

子进程和线程有什么区别?我尝试过谷歌搜索,但没有找到合适的答案。该链接提供了进程和线程之间的区别,但我想知道子进程和线程之间的区别是什么。由于子进程也是一个进程,所以它大部分与进程和线程之间的差异相同,但我想知道是否有一些特定的子进程和线程之间的区别,而这些区别不在进程和线程之间。


1
可能是进程和线程的区别是什么?的重复问题。 - Idos
你是指“同一进程中子进程和线程的区别”吗? - sameerkn
@sameerkn 是的,你可以考虑它是这样的。 - Fresher developer
@Fresherdeveloper:你认为在这个上下文中,为什么子进程和进程是不同的? - jfs
1个回答

21

首先,我们必须了解进程实际上是什么,然后是线程,如果我们能做到这一点,那么回答这个问题就会更容易。

进程 vs. 线程

进程(有时也称为任务)是程序的执行实例。 线程是轻量级进程,可以并行运行,并与其父进程(即创建它们的进程)共享地址空间(即一系列内存位置)和其他资源。

以上内容摘自此链接:http://www.linfo.org/context_switch.html

进程是正在执行的程序。例如,当我们用C或C ++编写程序并进行编译时,编译器会创建二进制代码原始代码和二进制代码都是程序。当我们实际运行二进制代码时,它就成为一个进程。 进程是一个“活动”实体,而程序被认为是一个“被动”实体。单个程序可以在多次运行时创建许多进程,例如当我们多次打开.exe或二进制文件时,许多实例开始运行(创建许多进程)。

以上内容摘自此链接:https://www.geeksforgeeks.org/gate-notes-operating-system-process-management-introduction/

一个进程是程序的一个实例(例如Jupyter笔记本,Python解释器)。进程生成线程(子进程)来处理子任务,如读取按键、加载HTML页面、保存文件。线程存在于进程内部,并共享相同的内存空间。
例如:Microsoft Word 当您打开Word时,您创建了一个进程。当您开始输入时,该进程会生成线程:一个用于读取按键,另一个用于显示文本,一个用于自动保存文件,还有一个用于突出拼写错误。通过生成多个线程,Microsoft 利用了空闲CPU时间(等待按键或文件加载),使您更加高效。
以上内容摘自此链接:https://medium.com/@bfortuner/python-multithreading-vs-multiprocessing-73072ce5600b Python为程序员提供了线程和子进程库以进行多任务处理。两者的目的几乎相同,但我们选择使用线程还是子进程取决于我们想要什么。 对于IO绑定应用程序,线程可能已经足够好,但对于CPU绑定应用程序,则不适用,因为它一次只使用单个CPU核心,这是由于Python的GIL和一个线程的失败将导致整个应用程序崩溃。
子进程适用于IO绑定应用程序和CPU绑定应用程序,但会消耗更多的内存。可以同时使用所有CPU核心(并行),单个进程的失败不会影响其他进程。
上面的部分取自这个链接:https://www.quora.com/For-multiprocessing-in-Python-which-library-should-I-use-threading-or-subprocess

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接