简单对比多线程与多进程-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
最大线程数为4
最大线程数为6
最大线程数为8
进程最大数为分别为2,4,6,8
最大进程数为2
最大进程数为4
最大进程数为6
最大进程数为8
希望阅读了我的文章的小伙伴们,都能动手测试测试,每个人电脑都不一样,所以结果也不一样。emmm,以上观点仅代表我自己的看法!同时也只是简单(划重点,防杠精)的测试,也说明不了太多什么吧,哈哈。以及如果文章内容有什么不足之处和问题的话,希望能评论或私信告诉我,谢谢啦!
最后,感谢你能阅读我的文章,感
恩!