快捷搜索:
来自 计算机编程 2019-06-15 15:46 的文章
当前位置: 67677新澳门手机版 > 计算机编程 > 正文

多进度并发机制,内建函数getattr工厂形式

python多进度并发机制:

getattr()那么些方法最首要的成效是贯彻反射机制。也便是说能够经过字符串获取格局实例。  传入差异的字符串,调用的方法区别。

那边运用了multprocessing.Pool进程池,来动态扩充进程

原型:getattr(对象,方法名)
#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(),'out%s'%str)()   传入的方法名区别,调用不一样的方法。些处方法名称为字符串。

从上述运维结果能够看来,一回最多施行了我们设定的4个经过。

那样的话,想想是或不是用途好多,笔者得以把艺术名配置到文件中,读取时使用getattr动态去调用。

 

#coding=utf-8

class pyMethod(object):
    def outstr(self):
        print('this is string')

    def outint(self):
        print('this is number')

    def outdate(self):
        print('this is date')


if __name__=="__main__":
    str = 'int'
    getattr(pyMethod(),'out%s'%str)()     
    str = 'str'
    getattr(pyMethod(),'out%s'%str)()
    str = 'date'
    getattr(pyMethod(),'out%s'%str)()

 

 

Linux and python学习沟通1,2群已满.

 getattr(pyMethod(),'out%s'%str)()  注意pyMethod()和最后的()   这里之所以这么写pyMethod()加括号是实例化类对象,最后的括号,因为getattr函数反射后,是一个方法对象。

本文由67677新澳门手机版发布于计算机编程,转载请注明出处:多进度并发机制,内建函数getattr工厂形式

关键词: