Python36 多线程、多进程的使用场景
多线程与多进程的使用场景 io 操作不占用CPU(从硬盘、从网络、从内存读数据都算io) 计算占用CPU(如1+1计算) python中的线程是假线程,不同线程之间的切换是需要耗费资源的,因为需要存储线程的上下文,不断的切换就会耗费资源。。 python多线程适合io操作密集型的任务(如socket server 网络并发这一类的); python多线程不适合cpu密集操作型的任务,主要使用cpu来计算,如大量的数学计算。 那么如果有cpu密集型的任务怎么办,可以通过多进程来操作(不是多线程)。 假如CPU有8核,每核CPU都可以用1个进程,每个进程可以用1个线程来进行计算。 进程之间不需要使用gil锁,因为进程是独立的,不会共享数据。 进程可以起很多个,但是8核CPU同时只能对8个任务进行操作。 多进程 测试多进程 import multiprocessing import time def run(name): time.sleep(2) print ('heelo',name) if __name__ == '__main__': for i in range(10): #起了10个进程 p = multiprocessing.Process(target=run,args=('bob%s' %i,)) p.start() 执行结果: heelo bob1 heelo