python多进程技术(一)

代码如下:
from time import sleep,ctime
import threading
from time import sleep,ctime
import multiprocessing
def super_player(file,time):
for i in range(2):
print('Start palying: %s %s'%(file,ctime()))
sleep(time)
list = {'月亮惹的祸.mp3':3,'干就完了.mp4':4,'一起去草原.mp3':5}
threads =[]
for file,time in list.items():
t = multiprocessing.Process(target=super_player,args=(file,time))
threads.append(t)
if __name__ == '__main__':
for i in range(len(list)):
threads[i].start()
for i in range(len(list)):
threads[i].join()
#主线程
print('end: %s'%ctime())
我们利用 multiprocessing.Process 对象来创建一个进程。Process 对象与 Thread 对象的用法相同,也有 start(), run(), join()的方法。
multiprocessing.Process(group=None, target=None, name=None, args=(), kwargs={})
target 表示调用对象,args 表示调用对象的位置参数元组。kwargs 表示调用对象的字典。Name 为别名。Group 实质上不使用。运行结果如下:
C:\Python35\python.exe E:/project/mutil.py
Start palying: 一起去草原.mp3 Fri Aug 17 17:58:01 2018
Start palying: 干就完了.mp4 Fri Aug 17 17:58:01 2018
Start palying: 月亮惹的祸.mp3 Fri Aug 17 17:58:01 2018
Start palying: 月亮惹的祸.mp3 Fri Aug 17 17:58:04 2018
Start palying: 干就完了.mp4 Fri Aug 17 17:58:05 2018
Start palying: 一起去草原.mp3 Fri Aug 17 17:58:06 2018
end: Fri Aug 17 17:58:11 2018
Process finished with exit code 0
从运行结果中还是看出细微的差别,虽然利用多进程任务时间没有变化,但多程的结果显示是以进程组为顺序进行显示的。
Start palying: 一起去草原.mp3 Fri Aug 17 17:58:01 2018
Start palying: 干就完了.mp4 Fri Aug 17 17:58:01 2018
Start palying: 月亮惹的祸.mp3 Fri Aug 17 17:58:01 2018
Start palying: 月亮惹的祸.mp3 Fri Aug 17 17:58:01 2018
Start palying: 月亮惹的祸.mp3 Fri Aug 17 17:58:04 2018
Start palying: 干就完了.mp4 Fri Aug 17 17:58:01 2018
Start palying: 干就完了.mp4 Fri Aug 17 17:58:05 2018
Start palying: 一起去草原.mp3 Fri Aug 17 17:58:01 2018
Start palying: 一起去草原.mp3 Fri Aug 17 17:58:06 2018

将喜欢的一切留在身边,这便是努力的意义。

浙公网安备 33010602011771号