1. 进程
线程是最小的执行单元,而进程由至少一个线程组成
这部分可能会多一些, 写JS写的比较多, 接触进程还是在上学搞java的时候.
1.1. 系统原生 OS 模块, 创建进程
fork函数是UNIX或类UNIX中的分叉函数,fork函数将运行着的程序分成2个(几乎)完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程
https://baike.baidu.com/item/fork/7143171?fr=aladdin
子进程永远返回0,而父进程返回子进程的ID.
import os
print('Process (%s) start...' % os.getpid())
# Only works on Unix/Linux/Mac:
pid = os.fork()
if pid == 0:
print('I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid()))
else:
print('I (%s) just created a child process (%s).' % (os.getpid(), pid))
1.2. multiprocessing 模块
1.2.1. Process 单进程
multiprocessing
模块就是跨平台版本的多进程模块. multiprocessing
模块提供了一个Process
类来代表一个进程对象.
from multiprocessing import Process
import os
# 子进程要执行的代码
def run_proc(name):
print('Run child process %s (%s)...' % (name, os.getpid()))
# if 块只在主进程执行
if __name__=='__main__':
print('Parent process %s.' % os.getpid())
p = Process(target=run_proc, args=('test',))
print('Child process will start.')
p.start()
p.join()
print('Child process end.')
=========输出========