【python高阶】Python中的多进程编程

进程是一个系统概念,也对应于CPU的底层硬件概念。

首先,可以查一下你的CPU可以支持几个线程:

from multiprocessing import cpu_count
print(cpu_count())

开启多进程的时候,最好不要接近或者超过CPU的硬件进程数。

from multiprocessing import Process
from time import sleep


def run(n):
    sleep(n)
    print(n)


if __name__ == '__main__':
    p1 = Process(target=run, args=(1,))
    p2 = Process(target=run, args=(2,))
    p3 = Process(target=run, args=(3,))
    p4 = Process(target=run, args=(4,))

    p1.start()
    p2.start()
    p3.start()
    p4.start()

多进程的启动还是非常方便的,启动指明目标函数名称和输入参数就行(这里注意后面有个逗号)。

多进程通过对CPU多核的巧妙利用,实现并行计算可从一定程度上达到加速程序的效果,看实验2:

from multiprocessing import Process
from time import time


def run():
    start = time()
    res = 0
    for i in range(10000):
        for j in range(10000):
            res += 1
            res -= 1
    print('time cost:', time() - start)


if __name__ == '__main__':
    t0 = time()
    run()
    p1 = Process(target=run, args=())
    p2 = Process(target=run, args=())
    p3 = Process(target=run, args=())
    p4 = Process(target=run, args=())

    p1.start()
    p2.start()
    p3.start()
    p4.start()
    p1.join()
    p2.join()
    p3.join()
    p4.join()

    print('all time cost:', time() - t0)

这个实验对比了未开启多进程和开启多进程的运行时间比较。输出为:

time cost: 3.343838691711426
time cost: 3.4023547172546387
time cost: 3.4059526920318604
time cost: 3.4068567752838135
time cost: 3.409113883972168
all time cost: 6.755127668380737

可以看到,用4个进程完成4次计算和未开启多进程完成1次计算的时间是几乎一样的

猜你喜欢

转载自blog.csdn.net/leviopku/article/details/106650577