class类里面先执行__new__,然后__init__
单例模式
线程安全单例模式
点击查看代码
import threadingclass Singleton:instance = Nonelock = threading.Rlock()def __new__(cls, *args, **kwargs):if cls.instance:return cls.instancewith cls.lock:if cls.instance:return cls.instancetime.sleep(0.1)cls.instance = object.__new__(cls)return cls.instance
进程
windows spawn
fork:拷贝几乎所有资源
spawn:传输必备资源,参数需要手动
daemon,join等等类似线程
获取进程id
os.getpid()
获取父进程id
os.getppid()
自定义进程类,继承multiprocessing.Process
进程之间的
数据共享
value array
Manager
Queues(队列)
Pipes(管道)
以上是Python内部提供的
后期项目中一般会借助第三方资源做资源共享
redis
Mysql
进程锁多进程共享资源的情况下
进程锁可以在spawn下传子进程
进程池
类似线程池
回调和线程池不一样,回调由主进程执行,进程池锁用manager下的