基本概念
多进程
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 ...