Python(廖)之进程与线程

一, 关于 多任务 概念

(单核CPU)操作系统轮流让各个任务交替执行

(多核CPU)根据CPU数量,各个任务可以做到一对于定程度的并行执行。

(1)对于操作系统来说,一个任务就是一个进程。比如打开两个记事本就启动了两个记事本进程。

(2)对于一个进程来说,可能会执行多种任务,比如word进程可能同时执行打字,拼写检查,打印等任务。

(3)这些属于进程内的任务就是线程。一个进程至少有一个线程。

(4)线程的执行和进程的执行方式是相同的。

 

二,Python如何实现多任务同时执行:

(1) 启动多个进程任务。

(2)启动一个进程,在一个进程内启动多个线程。

(3)启动多个进程,每个进程内包含若干个线程。

 

小结:

线程是最小的执行单元,而进程由至少一个线程组成。

如何调度进程和线程,完全由操作系统决定,程序自己不能决定什么时候执行,执行多长时间。

 

三, 多进程

Python作为跨平台的技术,multiprocessing模块就是跨平台版本的多进程模块。

如果要启动大量的子进程,可以用进程池的方式批量创建子进程。

(1)  Unix和Linux操作系统的fork()系统调用

Unix/Linux操作系统提供了一个fork()系统调用,这个区别于普通函数的调用,会调用一次,返回两次。因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。

子进程永远返回0,而父进程返回子进程的ID。这样就实现了多进程,一个父进程fork很多子进程,记录每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID。

注意:windows没有fork调用。

有了fork调用,一个进程在接到新任务时就可以复制出一个子进程来处理新任务,常见的Apache服务器就是由父进程监听端口,每当有新的http请求时,就fork出子进程来处理新的http请求。

(2)mutiprocessing模块提供了一个Process类代表一个进程对象。

multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束:

from multiprocessing import Process
import os

# 子进程要执行的代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值