一、多进程使用背景
想象一下,你正在组织一场大型派对,准备了一堆美味的食物需要尽快送到各个桌子上。如果只有你一个人负责这项任务,那么不管你多么能干,也难免手忙脚乱,派对的气氛可能就会因为等待而变得有些尴尬。但是,如果你能召集几位朋友来帮忙,每个人负责一部分任务,那么所有的食物就能迅速且高效地送到每个角落,派对的气氛自然也会活跃许多。
这个场景其实很像我们在编程中使用多进程的情况。想象你的电脑是那个派对现场,而你需要完成的任务(比如数据处理、文件读写等)就像是那些需要分发的食物。如果只用单一进程(就是你自己一个人干活),可能会因为任务过于繁重而导致处理速度慢,效率低下。但如果我们采用多进程(就像召集了一群朋友来帮忙),将大任务分解成许多小任务,由不同的进程并行处理,那么整体的完成速度就会大大提升。
多进程就像是给电脑提供了更多的手脚,让它能同时做更多的事情。尤其是在处理那些计算密集型或者需要大量读写操作的任务时,多进程能让电脑的多个CPU核心同时发挥作用,大幅提高任务的处理效率。就好比在派对上,有了更多帮手,美味的食物能更快地送到每个人手中,让派对的气氛更加热烈。
二、多进程算法
import concurrent.futures
import multiprocessing
import time
# 函数
def count(number, lock):
i = 1
for i in range(0, 1000000):
i = i + 1
# 判断锁,避免同时写入数据
with lock:
# 直接在这里处理文件操作
with open("datalnfo.txt", "a+") as file:
file.write(f"{number * i}\n")
return number * i
# 仅使用进程池
def run_pool():
lock = multiprocessing.Manager().Lock()
with concurrent.futures.ProcessPoolExecutor(max_workers=4) as executor:
futures = [executor.submit(count, i, lock) for i in range(100)]
for future in concurrent.futures.as_completed(futures):
pass
#print("[RESULT] : {}".format(future.result()))
if __name__ == '__main__':
start = time.time()
run_pool() # 进程池
print("[INFO]多进程耗时:{}".format(time.time() - start))
本文由 曲速引擎(Warp Drive)个人博客 曲速引擎(Warp Drive)CSDN技术博客 创作,转载请说明出处谢谢