多进程,多线程,协程

本文介绍了多进程、多线程和协程的基本概念。多进程通过 fork 系统调用创建子进程,常用于服务器处理新任务;多线程在 Python 中是 Posix Thread,但受限于 GIL,无法充分利用多核;协程作为微线程,高效执行,无线程切换开销。在 Linux 和 Mac 上可以使用模块进行多进程编程,Windows 平台则推荐使用模块。同时,文章强调了进程间通信和并发执行的区别,并指出在多核环境下,多进程优于多线程。
摘要由CSDN通过智能技术生成

基本概念

多进程
unix/linux操作系统提供一个fork()系统调用,调用一次,返回两次,在调用时操作系统自动把当前进程(父进程)复制了一份(子进程),然后分别在父进程和子进程内返回.

  • 子进程返回0,父进程返回子进程id.
  • 子进程调用getppid()可以拿到父进程的ID。
  • 多进程的主进程一定要写在程序入口if __name__ =='__main__':内部

多线程
线程是操作系统直接支持的执行单元,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程。

协程
又称为微线程,在一个线程中执行,执行函数时可以随时中断,由程序(用户)自身控制,执行效率极高,与多线程比较,没有切换线程的开销和多线程锁机制。

多进程示例
import os 

print("process (%s) start ..." % os.getpid())
pid = os.fork()
if pid == 0 :
    print('this is child processs: %s and paraent is %s' % (os.getpid(),os.getppid()))
else:
    print("this is %s and created child is : %s" % (os.getpid(),pid))

---执行结果:
process (38030) start ...
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值