并发执行¶
本章描述的模块提供了对代码并发执行的支持。 对工具的恰当选择将取决于要执行的任务(CPU 密集型 vs IO 密集型)和首选的开发风格(事件驱动的协同多任务处理 vs 抢占式多任务处理)。 这里是一个概述
threading
— 基于线程的并行active_count()
current_thread()
excepthook()
__excepthook__
get_ident()
get_native_id()
enumerate()
main_thread()
settrace()
settrace_all_threads()
gettrace()
setprofile()
setprofile_all_threads()
getprofile()
stack_size()
TIMEOUT_MAX
- 线程局部数据
- 线程对象
- 锁对象
- RLock 对象
- 条件对象
- 信号量对象
- 事件对象
- 定时器对象
- 屏障对象
- 在
with
语句中使用锁、条件和信号量
multiprocessing
— 基于进程的并行multiprocessing.shared_memory
— 用于跨进程直接访问的共享内存concurrent
包concurrent.futures
— 启动并行任务subprocess
— 子进程管理- 使用
subprocess
模块 - 安全考虑
- Popen 对象
- Windows Popen 辅助函数
STARTUPINFO
- Windows 常量
STD_INPUT_HANDLE
STD_OUTPUT_HANDLE
STD_ERROR_HANDLE
SW_HIDE
STARTF_USESTDHANDLES
STARTF_USESHOWWINDOW
STARTF_FORCEONFEEDBACK
STARTF_FORCEOFFFEEDBACK
CREATE_NEW_CONSOLE
CREATE_NEW_PROCESS_GROUP
ABOVE_NORMAL_PRIORITY_CLASS
BELOW_NORMAL_PRIORITY_CLASS
HIGH_PRIORITY_CLASS
IDLE_PRIORITY_CLASS
NORMAL_PRIORITY_CLASS
REALTIME_PRIORITY_CLASS
CREATE_NO_WINDOW
DETACHED_PROCESS
CREATE_DEFAULT_ERROR_MODE
CREATE_BREAKAWAY_FROM_JOB
- 较旧的高级 API
- 用
subprocess
模块替换较旧的函数 - 旧式 Shell 调用函数
- 注释
- 使用
sched
— 事件调度器queue
— 同步队列类contextvars
— 上下文变量
以下是上述某些服务的支持模块