python进阶(三) 内建函数getattr工厂模式

2019-12-02 23:22栏目:龙竞技官网
TAG:

python多进度并发机制:

getattr(卡塔尔(قطر‎这一个主意最珍爱的意义是落到实处反射机制。也正是说能够透过字符串获取方式实例。  传入区别的字符串,调用的章程不均等。

python元类:**type()   **

此间运用了multprocessing.Pool进度池,来动态扩充进程

原型:getattr(对象,方法名)

元类是python高阶语法. 合理的行使能够裁减大气重复性的代码.

#coding=utf-8
from multiprocessing import Pool
import time
def ft(x):
  #多任务,系统自动化配进程执行
  for i in range(2):
    print i,'-----------',x
    time.sleep(1)



def main_process():
    pool = Pool(processes=4) #控制进程池的大小,为4个进程
    for i in range(10):
        #添加入进程池,apply带_async,单独apply为阻塞版本;函数名target,参数args
        result = pool.apply_async(ft,(i,))

    pool.close()
    pool.join()

    if result.successful():
        print('_____success_____')


if __name__=="__main__":
    main_process()

 

 

运作结果:

举个栗子:

元类实际上做了以下三上面的做事:

C:Python27python.exe D:/weixin/temp/testtmp.py
0 ----------- 0
0 ----------- 1
0 ----------- 2
0 ----------- 3
1 ----------- 0
1 ----------- 1
1 ----------- 2
1 ----------- 3
0 ----------- 4
0 ----------- 5
0 ----------- 6
0 ----------- 7
1 ----------- 4
1 ----------- 5
1 ----------- 6
1 ----------- 7
0 ----------- 8
0 ----------- 9
1 ----------- 8
1 ----------- 9
_____success_____

Process finished with exit code 0

pyMethod类下定义了多少个办法,getattr(pyMethod(卡塔尔(英语:State of Qatar),'out%s'%str卡塔尔(قطر‎(卡塔尔   传入的点子名不一样,调用不一致的点子。些处方法名为字符串。

 

从以上运维结果可以见到,一次最多推行了小编们设定的4个进度。

那样的话,出主意是否用场超级多,小编能够把措施名配置到文件中,读取时使用getattr动态去调用。

  • 干预创制类的历程
  • 修改类
  • 再次回到改良现在的类

版权声明:本文由龙竞技官网发布于龙竞技官网,转载请注明出处:python进阶(三) 内建函数getattr工厂模式