python - 在什么情况下操作系统会知道 Python 创建的线程?
问题描述
我的理解是,一般而言,操作系统内核(例如 Linux)并没有真正了解在用户空间中创建的任何线程。此外,我相信在 Linux 中,操作系统内核只能看到“任务”或进程,而不是“线程”本身。
此外,我不确定 CPython 是否真的会为任何事情使用多个线程,除非明确使用threading
Python 中的包或C 标准 Python 库之一选择自己创建线程。我想这里的例外是multiprocessing
或任何 Python 库也可能产生多个进程,在这种情况下,操作系统内核将它们视为独立的。
在什么情况下操作系统内核会知道 Python 脚本创建的任何线程,包括它可能使用的任何模块?
解决方案
在 Linux 中:
任务是一个线程,进程是一个具有一个或多个线程的地址空间。
用户空间线程直接在内核中表示。有用于创建线程的 POSIX API pthread_create
,还有称为 NPTL 的线程 API 的 Linux 实现,它将一个用户级线程映射到内核级任务 ( task_struct
)。
CPython
multithreading
模块使用pthread_create
.
推荐阅读
- node.js - Angular 的热重载
- django - 我的 django 信号在哪里寻找在 createprofile 函数中创建的缺失参数?
- background - sweetalert2 标题字段中无法解释的背景颜色
- flutter - 在riverpod中,如何编写一个异步设置(仅一次)的StateNotifier
- vb.net - 如何在加载时使用条件设置 DataGridView Rows FontStyle?
- authentication - 尝试登录时的身份验证半径错误
- python - 追加是添加总和而不是添加到列表 python
- mysql - .NetCore MariaDb Dapper - 如何执行存储过程?
- android - 为什么我的数据绑定不适用于 HashMap?
- python - 如何从多次运行中将 python dict 存储在 json 文件中?