Python 多进程(二) 进程池 多进程操作同一个List
Python的多线程和多进程
Python的多线程为了数据安全设置了GIL全局解释器锁,而Python的多线程是靠并发的方式实现的,即Python只会在一个进程里永远执行一个线程。这就导致Python多线程的多线程效率低下。
Python中的Pool和Process
Pool是进程池
Process是动态生成进程
Pool的使用
import multiprocessing#引入multiprocessing
pool = multiprocessing.Pool(processes=4)#最大进程数
for i in range(4):
pool.apply_async(方法, (参数,)) #传入方法和参数
pool.close()
pool.join()
多进程操作同一个List
#进程之间的数据操作是独立的。
#multiprocessing中的Manager方法可以管理多进程的数据。
def __init__(self):
self.manager = mp.Manager
self.reslist = self.manager().list()
#这样创建list,无论是读取,都可以进行多进程同时操作。
# 引入参考的例子
#下面举一个ABCD四个打工人共同处理一个问题的情况:
import multiprocessing as mp
from loguru import logger
class work():
def __init__(self):
self.manager = mp.Manager
self.works = self.manager().list()
self.members = ["A","B","C","D"]
def create_works(self):
for i in range(1000):
self.works.append(i)
def finish_works(self,who):
while len(self.works) > 0:
finish = self.works.pop()
logger.info(f'{who}完成了{finish}')
def start(self):
self.create_works()
pool = mp.Pool(processes=4)
for i,member in enumerate(self.members):
pool.apply_async(self.finish_works, (member,))
pool.close()
pool.join()
if __name__ == '__main__':
work().start()
Reference
https://blog.csdn.net/CorGi_8456/article/details/123249438
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)