初试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‘
时间: 2024-10-12 23:22:28

初试python多线程传输文件的相关文章

pscp多线程传输文件

前面说过pscp不支持多线程,所以在此特地实现了一个 程序分三个部分: 1.初始化各种参数,涉及getopt函数的使用 2.重新定义scp,实现传递IP然后远程拷贝 3.启动多线程调用scp,涉及多线程的启动和等待线程结束 import sys, getopt import commands import threading p = 1 host_file = "" source_file = "" destin_file = "" #init

python多线程下载文件

从文件中读取图片url和名称,将url中的文件下载下来.文件中每一行包含一个url和文件名,用制表符隔开. 1.使用requests请求url并下载文件 def download(img_url, img_name): with closing(requests.get(img_url, stream=True)) as r: with open(os.path.join(out_dir, img_name), 'wb') as f: for data in r.iter_content(102

Python Socket传输文件

发送端可以不停的发送新文件,接收端可以不停的接收新文件. 例如:发送端输入:e:\visio.rar,接收端会默认保存为 e:\new_visio.rar,支持多并发,具体实现如下: 接收端: 方法一: #-*- coding: UTF-8 -*- import socket,time,SocketServer,struct,os,thread host='192.168.50.74' port=12307 s=socket.socket(socket.AF_INET,socket.SOCK_S

python post传输文件脚本

ps:背景,无法ssh相互访问机器(一般中间有堡垒机阻拦)的情况下,但是使用域名可以进行访问的情况下 可以使用http协议进行文件的上传. 服务器端代码(接受post的一端) #coding=utf-8 from BaseHTTPServer import BaseHTTPRequestHandler import cgi class   PostHandler(BaseHTTPRequestHandler):     def do_POST(self):         form = cgi.

Socket局域网多线程传输文件的方法

1.思路:为了实现各种大小的文件都可发送和接收,可设置缓冲区循环发送和接收,并记录文件读到的位置,如果某次读入到缓冲区的字节数小于缓冲区的大小,则说明文件发送完了,退出发送循环,关闭连接.并且Csocket是阻塞的,接收端接能接收到发送端发送的所有内容,直到发送端连接关闭,接收端退出接收循环. //循环发送文件 2.主要代码 发送端: do { file.Seek(step,CFile::begin); over=file.Read(buffer,BUFFERSIZE);//文件读入缓冲 err

Python 的网络传输文件功能的设计与实现

摘要:Python 是目前较流行的程序设计语言之一,它具有简单易学代码简洁等特点,并且Python 提供了大量的功能库文件,开发大型应用程序时非常方便,广泛用于网站开发.游戏后台开发等方面.该文基Python 提供的网络编程库,开发了网络文件传输的功能,该功能可以快速有效地在互联网上进行文件的传输.1 Python 介绍Python是由Guido van Rossum在1989年底创造的,在1991年发行了第一个公开版本.Python是一种面向对象的.解释型的.动态数据类型的程序设计语言.Pyt

Python实现Windows和Linux之间互相传输文件(文件夹)的方法

项目中需要从Windows系统传输ISO文件到Linux测试系统,然后再Linux测试系统里安装这个ISO文件.所以就需要实现如何把文件从Windows系统传输到Linux系统中. 在项目中使用了pscp.exe这个工具,只要按照pscp.exe的使用说明操作即可.只要进入pscp.exe的安装位置,然后输入pscp即可查看pscp的使用说明. 下面是我机器上的: 使用Python实现也挺简单的,下面的code主要介绍4中情况: 1. windows传输文件到Linux 2. windows传输

Python不同电脑之间传输文件实现类似scp功能不输密码

SCP vs SFTP 通过paramiko还可以传输文件,如何通过paramiko在计算机之间传输文件,通过阅读官方文档,发现有如下两种方式: sftp = paramiko.SFTPClient.from_transport(ssh.get_transport()) sftp = ssh.open_sftp() 即新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证. 文件上传 In [59]: sftp.put('memor

python传输文件

传输文件简单版 server端: import socket import struct import json import os share_dir = r'C:\py3Project\路飞\第三模块\第二章网络编程\05_文件传输\简单版本\server\share' IP_PORT = ('127.0.0.1', 8999) def bytes2human(n): symbols = ('K', 'M', 'G', 'T', 'P', 'E') prefix = {} for i, s