码迷,mamicode.com
首页 > 编程语言 > 详细

初试python多线程传输文件

时间:2014-11-13 07:09:50      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:多线程   主程序   error   

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


由于工作原因,试用期需要学习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‘
			
		


本文出自 “要做一只博学多才的运维狗” 博客,请务必保留此出处http://kekeung.blog.51cto.com/2339469/1575894

初试python多线程传输文件

标签:多线程   主程序   error   

原文地址:http://kekeung.blog.51cto.com/2339469/1575894

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!