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:25 2019
Start playing: 大头儿子小头爸爸.mp4! Mon Apr 22 16:49:25 2019
Start playing: 舒克和贝塔.mp4! Mon Apr 22 16:49:25 2019
Start playing: 铃儿响

这篇博客探讨了在Python中如何使用multiprocessing模块进行多进程编程,以克服GIL限制并有效利用多核CPU。文章介绍了Pipe和Queue两种进程间通信方式,强调它们在效率上的优势,并指出在多线程执行测试用例时的潜在应用。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



