简单对比多线程与多进程-python(探索ing)

我又来了,哈哈。
电脑配置:
cpu为i5-10300H
运行内存为16G

测试代码如下

def add():
    lock.acquire()
    with open('test.txt', 'a') as f:
        f.write('写入\n')
    lock.release()

首先多线程

最大线程数为10,循环10000次,正常情况为有10000行"写入"

def many_threading():
    with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
        for j in range(10000):
            executor.submit(add)

运行结果:
在这里插入图片描述
如图,1w行。没毛病。
下面看看多进程

多进程

最大进程数为5,同样循环10000次,同理,正常情况也为10000行“写入”

if __name__ == '__main__':
    with concurrent.futures.ProcessPoolExecutor(max_workers=5) as executor:
        for i in range(10000):
            executor.submit(add)

运行结果:
在这里插入图片描述
如图,结果为9981行“写入”,出现数据丢失。

分别为最大线程和进程为2

结果如下

进程

在这里插入图片描述


结果依然为9981行,数据丢失。

线程

在这里插入图片描述
结果为1w行,数据正常。


结论

经由上述的对比,可暂得出结论,用线程比用进程好,如考虑数据丢失问题的话。而多线程的速度也比多进程更快,同样二者合用也会出现数据丢失!(这边就直接给出结果了,请看下面几张图。)



线程最大数分别为2,4,6,8

最大线程数为2

最大线程数为2

最大线程数为4

最大线程数为4

最大线程数为6

最大线程数为6

最大线程数为8

最大线程数为8

进程最大数为分别为2,4,6,8

最大进程数为2

最大进程数为2

最大进程数为4

最大进程数为4

最大进程数为6

最大进程为6

最大进程数为8

最大进程为8


希望阅读了我的文章的小伙伴们,都能动手测试测试,每个人电脑都不一样,所以结果也不一样。emmm,以上观点仅代表我自己的看法!同时也只是简单(划重点,防杠精)的测试,也说明不了太多什么吧,哈哈。以及如果文章内容有什么不足之处和问题的话,希望能评论或私信告诉我,谢谢啦!






最后,感谢你能阅读我的文章,感

恩!

posted @ 2022-09-14 22:05  晓星晨曦  阅读(233)  评论(0编辑  收藏  举报