需求:
在有多线程的情况下,我们可以使用线程帮我们处理一些事情,但是在python这里 由于RSA锁的缘故,我们只能够用到一个cpu帮我们处理事情,一个cpu在处理多个线程时,是通过上下文的切换使我们产生幻觉,感觉他同时在处理多个线程,但是在这里cpu在进行上下问的切换也是要消耗cpu。cpu是处理计算的 如1+1的计算。io操作不占用cpu,io只做网络,磁盘,内存中读取数据。所以python多线程 不适合CPU密集操作行的任务,python更适合io密集型的任务。
方案:
这里可以使用进程,采取多进程的方式,可以使用到,多核的其他CPU,但是由于进程的原因,是不能共享数据的。
参数:
multiprocessing.Process(target=函数, args=('参数',)) #生成一个进程
注:Linux 每一个进程都是由父进程启动的。
注:每一个进程默认都有一个父进程。
多进程模板:
import multiprocessing import time def f(name): time.sleep(2) print('hello', name) if __name__ == '__main__': # 生成一个进程实例 p = multiprocessing.Process(target=f, args=('bob',)) # 启动一个进程 p.start() # 等待一个进程完成 p.join()
多进程查看,主进程与子进程PID:
from multiprocessing import Process import os def info(title): print(title) # 打印模块名 print('module name:', __name__) # 打印父进程ID print('parent process:', os.getppid()) # 打印自己的ID print('process id:', os.getpid()) print(" ") def f(name): # 子进程调用info info('