Python系统编程之进程

40次阅读

共计 1015 个字符,预计需要花费 3 分钟才能阅读完成。

1、多任务概念
多任务处理是指用户可以在同一时间内运行多个应用程序, 每个应用程序被称作一个任务.Linux 就是一个支持多任务的操作系统, 比起单任务系统它的功能增强了许多.
当多任务操作系统使用某种任务调度策略允许两个或更多进程并发共享一个处理器时,事实上处理器在某一时刻只会给一件任务提供服务。因为任务调度机制保证不同任务之间的切换速度十分迅速,因此给人多个任务同时运行的错觉。多任务系统中有 3 个功能单位:任务、进程和线程。
当操作系统使用某种策略允许两个或更多进程并发共享一个 CPU 时, 它称作多任务运行, 或多道程序运行. 在规定的时间片过期或某些事件发生前, 一直执行某个进程. 然后, 操作系统切换到另一个进程. 这种切换十分迅速, 给人一种这些进程是同时执行的错觉. 而事实上, 同一时刻在一个 CPU 上只能激活一个进程. 这种进程间的切换在所有进程完成前一直进行. 并发共享策略决定何时切换进程. 该策略由操作系统或其他进程强制执行.
2、fork 创建子进程
2.1. 进程的概念计算机程序只是存储在磁盘上的可执行二进制(或者其他类型)文件。只有把它们加载到内存中并被操作系统调用,才能拥有生命周期。进程则是一个执行中的程序。每个进程都拥有自己的地址空间,内存,数据栈以及其他用于跟踪执行的辅助数据。操作系统管理其上所有进程的执行,并为这些进程合理地分配时间。进程也可以通过派生 (fork 或 spawn) 新的进程来执行其他任务,不过因为每个新进程也都拥有自己的内存和数据栈等,所以只能采用进程间通信 (IPC) 的方式共享信息。
2.2.forkPython 的 os 模块封装了常见的系统调用,其中就包括 fork,可以在 Python 程序中轻松创建子进程:
# cat 01-fork.py
import os
import time

# 注意,fork 函数,只在 Unix/Linux/Mac 上运行,windows 不可以
ret = os.fork()
if ret == 0:
while True:
print(“—1—“)
time.sleep(1)
else:
while True:
print(“—2—“)
time.sleep(1)

运行结果:
# python 01-fork.py
—2—
—1—
—2—
—1—
—2—
—1—
—2—
—1—
—2—
—1—

3、process 创建子进程
4、进程池
5、进程间通信
6、多进程拷贝文件

正文完
 0