【bf88必发唯一官网】多进度并发机制,shell脚本学习之调用脚本将文件打包zip的法子言传身教

by admin on 2019年4月3日

python多进程并发机制:

【bf88必发唯一官网】多进度并发机制,shell脚本学习之调用脚本将文件打包zip的法子言传身教。getattr()那些办法最要害的功用是兑现行反革命射机制。约等于说能够因而字符串获取情势实例。  传入不相同的字符串,调用的情势不一样等。

python元类:**type()   **

【bf88必发唯一官网】多进度并发机制,shell脚本学习之调用脚本将文件打包zip的法子言传身教。前言

那里运用了multprocessing.Pool过程池,来动态增加进度

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

元类是python高阶语法.
合理的选择能够减小大气重复性的代码.

正文主要给大家介绍的是有关调用脚本将文件打包zip的连锁资料,分享出去供大家参考学习,上面来共同探访详细的介绍:

#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()

 

 

近年刚刚接触shell脚本,写了几许不难的练手。那里是用python调用脚本执行打包操作。

运作结果:

举个栗子:

元类实际上做了以下叁方面包车型客车做事:

主意如下:

C:\Python27\python.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)()  
传入的措施名不一样,调用分化的措施。些处方法名称叫字符串。

 

第二步,创建脚本:

从以上运营结果可以看看,二遍最多执行了我们设定的伍个进度。

那样的话,想想是还是不是用途很多,我可以把办法名配置到文件中,读取时使用getattr动态去调用。

  • 干预创建类的历程
  • 修改类
  • 回到修改之后的类
#!/bin/sh
CERT_DIR_ZIP=/data/cert/keys  
zip_user(){
 zip -P $zip_psw /data/frontend/tmp/$zip_name.zip $client/*
}
if [ "x$1" = "xzip" ];then
 cd $CERT_DIR_ZIP
 client=$2
 zip_psw=$3
 zip_name=$4
 zip_user
 cd -
fi

 

#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)()

 

其次步:调用脚本

 

 

为什么选择元类?

bf88必发唯一官网, 

怎么要采用元类那种歪曲且便于出错的效果?
相似景观下,大家并不会选用元类,9玖%的开发者并不会用到元类,所以1般不要思虑那么些标题。
元类主用用于创立API,一个超人的例证就是Django的ORAV4M。
它让大家能够这么定义三个类:

 

class Person(models.Model):
  name = models.CharField(max_length=30)
  age = models.IntegerField()

 

运营下边的代码:

guy = Person(name='bob', age='35')
print(guy.age)

再次来到的结果是int项目而不是IntegerField目的。那是因为models.Model行使了元类,它会将Python中定义的字段转换到数据库中的字段。
通过使用元类,Django将复杂的接口转换来不难的接口。

 

原型:type(类名,基类元组(可以为空,用于继承), 包含属性或函数的字典)

 以下两种写法都得以:

type(‘Class’,(object,),dict(hello=fun()))

type(‘Class’,(object,),{“hello”:fun()})

一、class 自定义的类名称

2、(object,)是继承类,的元组,如若唯有二个就写那种时势(object,);多少个(object,xxxx,)

3、dict(hello=fun()) 或 {“hello”:fun()}
第多少个参数,是四个字典等号左是
自定义的点子名,左边是已写好的主意名,那个要留意,有参数且并未有暗许值的意况下,要加括号;

 

def fun():
    print('hello world!')


if __name__=="__main__":

    h = type('Hello',(object,),dict(hello=fun()))
    tc = h()
    tc.hello

 

引用:

h 也正是收到Hello类;tc
= h()实例化类;tc.hello方法,调用的骨子里是我们定义的fun方法。

    Hello = type('Hello',(object,),dict(hello=fun()))
    tc = Hello()
    tc.hello

 type()动态创立类后,还足以加上越来越多的点子和脾气:

def mysql():
    conn = pymysql.connect(host='127.0.0.1',port=3306 ,user='root' ,passwd='q123456' ,db='amsql' )
    cur = conn.cursor()
    sql = "SELECT * FROM amt_case_interface_table"
    ret = cur.execute(sql)
    print(cur.fetchmany(3))
    #conn.commit()

    cur.close()
    conn.close()

Hello.mysql = mysql()

调用:

tc.mysql

 

Linux and
python学习交换壹,二群已满.

Linux and
python学习调换叁群新开,欢迎参与,1起学习.qq 三群:5632278九四

不前进,不倒退,停止的气象是尚未的.

联合前进,与君共勉,

 

自家那边用的是python调用的脚本文件去实施,注意传入的字符格式。俺那里exec_shell写在集体类中.

Linux and
python学习交换一,二群已满.

 getattr(pyMethod(),'out%s'%str)()  注意pyMethod()和最后的()   这里之所以这么写pyMethod()加括号是实例化类对象,最后的括号,因为getattr函数反射后,是一个方法对象。
exec_shell(self, '/bin/sh /data/root/sbin/usercert.sh zip ' + CLIENT + ' "' + zip_psw + '" ' + zip_name)


#具体方法
import commands
def exec_shell(self, shell):
 (status, out) = commands.getstatusoutput(shell)
 if (status != 0): # 执行脚本失败
 self.log.debug("exec [%s] fail. out=%s"%(shell, out))
 else:
 self.log.debug("exec [%s] success. out=%s"%(shell, out))
 return (status, out)

Linux and
python学习调换叁群新开,欢迎插手,一起学习.qq 三群:5632278玖四

 

总结

不前进,不倒退,截至的图景是尚未的.

运作结果:

上述就是那篇小说的全体内容,希望本文的内容对大家的就学或然办事能带来一定的拉扯,借使有疑点大家能够留言交换,谢谢我们对剧本之家的帮助。

一起发展,与君共勉,

C:\Python27\python.exe D:/weixin/python_getattr.py
this is number
this is string
this is date

Process finished with exit code 0

您或然感兴趣的稿子:

  • 提升你工效的shell命令总结大全
  • Linux下NC反弹shell命令(推荐)
  • shell脚本完成多彩进度条
  • shell怎么着记录用户的IP与命令详解
  • shell脚本达成多进程运营的措施言传身教
  • Shell脚本草图经典之Fork炸弹的剖析与防患
  • 详解Linux Shell
    达成3个取得任意位数的4意密码的台本

 

 

Linux and
python学习交换一,二群已满.

Linux and
python学习交换3群新开,欢迎参加,一起学习.qq 三群:56322789四

不前进,不倒退,甘休的情景是不曾的.

共同发展,与君共勉,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图