python学习第九天

paramiko模块

ssh 密钥连接连接

import paramiko

private_key =pramiko.RSAKey.from_private_key_file("私钥路径")

ssh =paramiko.SShClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname=",port=",username=",pkey=private_key)

#ssh.connect(hostname=",port=",username=",password=")

stdin,stdout,stderr =ssh.exec_command("")

result =stdout.read()

ssh.close(0

scp 密钥连接传输

import paramiko

private_key =pramiko.RSAKey.from_private_key_file("私钥路径")

transport =paramiko.Transport("","")

transport.connect(username="",pkey=private_file)

#transport.connect(username="",password="")

sftp =paramiko.SFTPClient.from_transport(transport)

sftp.put("原文件路径","目标文件路径")

sftp.get("目标文件路径","本地路径")

transport.close()

进程:程序调用资源的一个集合

线程:程序指令的集合

进程与线程的区别

主线程创建子线程,线程间相互独立

线程共享内存,进程内存独立

启动线程比进程快

线程可以直接通信,进程需要中间进程

线程可以操控其他线程,进程只能操控子进程

多线程

import threading
import time
def run(n):
print("task",n)
time.sleep(2)

t1 =threading.Thread(target=run,args=("t1",))  并发执行
t1.start()
t2 =threading.Thread(target=run,args=("t2",))
t2.start()

# run("t1")  串行执行
# run("t2")

多线程的类方法实现

import threading
class MyThread(threading.Thread):
def __init__(self,n):
super(MyThread,self).__init__()
self.n =n

def run(self):
print("runint task",self.n)

t1 =MyThread("t1")
t2 =MyThread("t2")
t1.start()
t2.start()

同时启动多个并发任务并获取每个线程的执行完成

import threading,time
def run(n):
print("task",n)
time.sleep(2)

start_time =time.time()
t_obj =[]
for i in range(50):
t =threading.Thread(target=run,args=("t-%s"%i,))

#t.setDaemon(True)设置守护线程,等待非守护线程结束后该线程就结束
t.start()
t_obj.append(t)

for t in t_obj:
t.join()  等待相应线程的执行完成

print("cost",time.time()-start_time)

lock =threading.Lock() 实例化线程锁

lock =threading.RLock() 实例化递归锁

lock.acquire()  申请线程锁

lock.release() 释放线程锁

semaphore = threading.BoundedSemaphore(5#最多允许5个线程同时运行

semaphore.acquire()

semaphore.release()

队列

import queue
# q =queue.Queue()  先进先出队列
# q =queue.LifoQueue()  后进先出队列
q =queue.PriorityQueue(maxsize=3)  自由设置优先级队列
q.put((1,"alex"))   元组形式传递优先级和消息内容,第一个值越小优先级越高
q.put_nowait(2)  当队列放满时,直接返回
q.put(1) 放入消息内容
q.put(2)
q.get(block=False,timeout=1)  获取消息内容,block=false代表没有值时直接返回,timeout=1表示等待时间到1秒后就返回
q.get_nowait()  获取消息时,队列为空就返回
print(q.empty())   检测队列是否为空
print(q.full())  检测队列是否放满了
print(q.qsize())  检测队列中消息的个数

生产者消费者模型

import threading,queue,time
q =queue.Queue(maxsize=10)

def product(name):
count = 1
while True:
q.put("骨头%d" ,count)
print("[%s]生产了骨头%d"%(name,count))
count +=1
time.sleep(2)

def consumer(name):
while True:
print("[%s]取了骨头[%s],并吃了它"%(name,q.get()))
time.sleep(1)

t =threading.Thread(target=product,args=("alex",))
t2 =threading.Thread(target=consumer,args=("jack",))
t3 =threading.Thread(target=consumer,args=("wangnima",))
t.start()
t2.start()
t3.start()

时间: 2024-12-16 14:07:20

python学习第九天的相关文章

据廖雪峰python3教程----python学习第九天

递归函数 ------- 在函数内部可以调用自身本身的函数 定义一个计算阶乘的函数fact(n): fact(n) = n!       = 1 x 2 x 3 x ... x (n-1) x n      = (n-1)! x n      = fact(n-1) x n 函数可以写为: >>> def fact(n):           if n==1:               return 1      return n*fact(n-1) >>> fact

我的python学习--第九天

一.复习 1.业务逻辑图 2.注意点 (1).任何页面都必须验证是否登录,没有登录则跳转到登录界面(通过session判断) (2).普通用户与管理员权限之分 1.添加用户只能由管理员操作 2.删除用户也只能由管理员操作 3.更新用户中,状态和角色由管理员修改,普通用户只能修改指定的信息 4.查看所有用户列表只能管理员操作,普通用户只能查看自己的信息 3.jquery ajax - serialize()方法 示例 <html> <head> <script src=&quo

2018-11-26 python学习第九天

x='上' #unicode的二进制------编码encode------->gbk格式的二进制res=x.encode('gbk') res=x.encode('utf-8') print(res,type(res)) #unicode的二进制<------解码decode-------gbk格式的二进制m=res.decode('gbk')print(m) ''' 什么是文件文件是操作系统为应用程序或者用户提供一种操作硬盘的虚拟单位强调:文件是操作系统提供的虚拟单位应用程序或者用户对文件

python学习:程序控制结构·作业20141219

Python学习:程序控制结构 20141219 编程环境: windows 7 x64 python 2.7.6 题目: 1 编写程序,完成下列题目(1分) 题目内容: 如果列出10以内自然数中3或5的倍数,则包括3,5,6,9.那么这些数字的和为23.要求计算得出任意正整数n以内中3或5的倍数的自然数之和. 输入格式: 一个正整数n. 输出格式: n以内中3或5的倍数的自然数之和. 输入样例: 10 输出样例: 23 时间限制:500ms内存限制:32000kb n = int(raw_in

python学习第二天

python学习的第二天就是个灾难啊,这天被打击了,自己写的作业被否认了,不说了,写博客还是个好习惯的,要坚持下去,就不知道能坚持到什么时候.呵呵!!! 这天教的知识和第一天的知识相差不大,区别在于比第一天讲的更细了(我们是两个老师教的,风格是不一样的),这次也写那些比较细的知识点. python的简介 (1)你的程序一定要有个主文件. (2)对于python,一切事物都是对象,对象基于类创建.#似懂非懂,不过有那么点似懂. 知识点 #__divmod__ 会把两个数字相除的商和余数以元组的方式

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

python学习之最简单的用户注册及登录验证小程序

文章都是从我的个人博客上粘贴过来的哦,更多内容请点击 http://www.iwangzheng.com 正如很多同学所知道的,楼主开始学习python了,前进的道路曲曲折折,有荆棘也有陷阱,从最简单的小程序写起,每天练习,将python进行到底. 有一点比较别扭的就是python的换行之后空四个空格,ruby都是两个,并且python在方法和循环语句的第一句都要加冒号 mysql> show create table user; mysql> alter table user add sal

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho