multiprocessing模块
多进程multiprocessing模块的使用与多线程threading模块的方法类似。multiprocessing提供了本地和远程的并发性,有效地通过全局解释锁来使用进程(而不是线程)。由于GIL的存在,在CPU密集型程序中,使用多线程并不能有效地利用多核cpu的优势,因为一个解释器在同一时刻只会有一个线程在执行。所以multiprocessing模块可以充分利用硬件的多处理器来进行工作
from time import sleep,ctime
import multiprocessing
def super_player(file_,time):
for i in range(2):
print('Start playing: %s! %s'%(file_,ctime()))
sleep(time)
lists={'铃儿响叮当.mp3':3,'大头儿子小头爸爸.mp4':5,'舒克和贝塔.mp4':4}
threads=[]
files=range(len(lists))
for file_ ,time in lists.items():
t=multiprocessing.Process(target=super_player,args=(file_,time))
threads.append(t)
if __name__ == '__main__':
for t in files:
threads[t].start()
for t in files:
threads[t].join()
print('end: %s'%ctime())
运行结果:
Start playing: 铃儿响叮当.mp3! Mon Apr 22 16:49: