python多线程传输,初试python多线程传输文件

新手!!求见谅!!望多指点

由于工作原因,试用期需要学习python,因为运维工作全都是由python完成,幸好有点python基础,知道什么是列表,元组,字符,字典什么的,要不然死翘翘的。

创建多线程主要的步骤有:

1、创建一个函数,这个函数是多线程需要多次运行的内容

2、利用for循环生成对应函数的多个成品(就是说这个函数已经赋予了需要的参数了,直接运行就可以的了)

3、利用for循环开始执行函数

4、利用for循环使主程序挂起,等待子进程完成后再执行其他动作

--------------------以下是一个事例,用于向对应的不同IP地址同时传输文件,当然,这个没有在生产环境上测试过,只是在测试机做了测试

#!/usr/bin/python

import time,threading,sys,os

control_thread=threading.Semaphore(10)#控制一次能够运行多少的线程

if len(sys.argv) != 2:

print 'error'

sys.exit(10)

def READY(IP):#这里,就是要运行的程序了,相当于说明的第一点

IP=IP.strip()

if control_thread.acquire():

try:

assert 0 != os.system('/usr/bin/rsync -az /opt/test %s:/var/tmp' % (IP))

except:

print IP.strip(),threading.currentThread().getName(),'send fail'

else:

print IP.strip(),threading.currentThread().getName(),'SUCCESS'

finally:

control_thread.release()

def ACTION():

FILE=sys.argv[1]

X=[]

for i in open(FILE):#多次调用该函数,让X成为一个将要操作的列表,相当于说明的第二点

T=threading.Thread(target=READY,args=(i,))

X.append(T)

for i in range(len(X)):#开始执行,相当于说明的第三点

X[i].start()

for i in range(len(X)):#等待子进程结束才执行下面的动作,相当于说明的第四点

X[i].join(60)

print 'start time: ',time.ctime(),'\n'

ACTION()

print '\n','end time: ',time.ctime(),'\n'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值