多进程技术multiprocessing.py

"""
多进程multiprocessing模块的使用与多线程threading模块的用法类似。multiprocessing提供了本地和远程的并发性,
有效地通过全局解释锁(Global Interceptor Lock,GIL)来使用进程(而不是线程)。由于GIL的存在,在CPU密集型的程序当中,
使用多线程并不能有效地利用多核CPU的优势,因为一个解释器在同一时刻只会有一个线程在执行。
所以,multiprocessing模块可以充分利用硬件的多处理器来进行工作。它支持UNIX和Windows系统上的运行。
修改多线程的例子,将threading模块中的Thread方法替换为multiprocesing模块的Process就实现了多进程。
"""
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,"我和你.mp3":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 i in files:
threads[i].start()
for i in files:
threads[i].join()
print("end:%s" % ctime())

"""
我们利用Process对象来创建一个进程。Process对象与Thread对象的用法相同,也有start)、run)、join()等方法。
multiprocessing.Process(group=None,target=None,name=None,args=(),kwargs={})
target表示调用对象,args表示调用对象的位置参数元组,kwargs表示调用对象的字典,name为别名,Group实际上不使用。
"""
原文地址:https://www.cnblogs.com/zhang-da/p/12210550.html