zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python多进程技术(一)

2023-09-11 14:19:05 时间

代码如下:

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