python多进程参考代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#@Time    :    2019/11/18 0018 21:55
#@Author  :    tb_youth
#@FileName:    multiprocessingTest.py
#@SoftWare:    PyCharm
#@Blog    :    https://blog.csdn.net/tb_youth

'''
学习如何使用多进程
'''

from multiprocessing import Process
import os
import time

def run_case(text):
    print('入参:{0},当前进程号:{1}'.format(text, os.getpid()))
    time.sleep(5)


if __name__ == '__main__':
    #父进程用于启动子进程
    print('当前是父进程,进程号:{0}'.format(os.getpid()))
    s1 = time.time()
    for i in range(5):
        child = Process(target=run_case, args=(str(i),))
        print('子进程启动.')
        child.start()
        # join()进行进程阻塞(阻塞主进程,不加则会主进程结束再调用子进程)
        #目的是进程同步
        #但是不应该放在这里,应该放在所有start后面去执行
        #否则效率可能不如单进程
        child.join()
    e1 = time.time()
    print('time = {0}'.format(e1-s1))
    print('进程结束.')
    print('+------------------------+')

    print('当前是父进程,进程号:{0}'.format(os.getpid()))
    s2 = time.time()
    lst = []
    for i in range(5):
        child = Process(target=run_case, args=(i,))
        print('子进程启动.')
        child.start()
        lst.append(child)
    # 多进程join()的正确写法
    for child in lst:
        child.join()
    e2 = time.time()
    print('time = {0}'.format(e2 - s2))
    print('进程结束.')



执行上述代码结果:

当前是父进程,进程号:3732
子进程启动.
入参:0,当前进程号:8156
子进程启动.
入参:1,当前进程号:7636
子进程启动.
入参:2,当前进程号:7632
子进程启动.
入参:3,当前进程号:3004
子进程启动.
入参:4,当前进程号:16632
time = 26.717877864837646
进程结束.
+------------------------+
当前是父进程,进程号:3732
子进程启动.
子进程启动.
子进程启动.
子进程启动.
子进程启动.
入参:3,当前进程号:17916
入参:2,当前进程号:13984
入参:1,当前进程号:17804
入参:0,当前进程号:3088
入参:4,当前进程号:3748
time = 5.643748760223389
进程结束.

参考

猜你喜欢

转载自blog.csdn.net/tb_youth/article/details/103134218