从操作实例“UI界面实现SSH登录服务器并执行命令监控”中学习到的线程与线程间参数传递方法记录;

https://www.cnblogs.com/babashi9527/p/16594881.html

参照此代码中的实例,线程主要以启用线程传递函数方式运行对应的执行内容,而线程间的参数传递依托于队列方式实现;

1、多线程

使用模块threading中的Thread

代码示例:

#首先确保模块已导入
from threading import Thread #实例化线程
'''
参数含义: target 绑定线程函数, args 元组 给线程函数位置传参, kwargs #字典 给线程函数键值传参
'''
td = Thread(target=ServerMonitor,args=(abd,))
#设置主线程和分支线程退出分支线程也退出.要在start前设置 通常不和join 一起使用
td.setDaemon(1)
#启动线程
td.start()

#定义执行函数
def ServerMonitor(abd):
  print(abd)

2、队列

使用系统自带的queue模块

代码示例:

#确保已导入模块
import queue #调用queue模块中的Queue函数定义队列,并配置队列长度
QueueInfo = queue.Queue(100000) #使用put方法将数据压入队列尾部
QueueInfo.put(back_normal_info) #使用get方法取队列头部值
AnswerInfo = QueueInfo.get()

3、以参数形式传递py文件中的类,以供函数引用所传递的py文件类中的变量或者方法

#注意此处定义的类,稍后以self,作为参数传递给其他py文件
class MainFrameUI(wx.Frame): def __init__(self,parent): #起线程开始任务
td = Thread(target=self.ServerMonitor)
td.setDaemon(1)
td.start() #把所属的类传递,以self作为参数传递给目标函数(目标函数会传递给另外一个彭以文件)
def ServerMonitor(self):
#@author: 9527 Load_list1 = self.Info_List2 #实例化Remote_management_WayKind类
self.Ssh_load = MESRM.Remote_management_WayKind() if self.action_or_stop == True: for Load_list in Load_list1: td = Thread(target=self.Use_Monitor, args=(self, Load_list))
td.setDaemon(1)
td.start() else:
self.log_info1.AppendText('连接失败请重试\n')
pass #这里的parent是上面线程传递的self,将会传递给调用的另外一个py文件的Command_Way方法里面;注意在此方法中也需要定义参数,以便接受参数传入;
  def Use_Monitor(self, parent, Load_list): #调用MESRM.Remote_management_WayKind的Command_Way方法
#传参parent为self是启用进程的MainFrameUI本身,Load_List为登陆了认证信息
print("调用进程已启用: ", Load_list)
self.Ssh_load.Command_Way(parent,Load_list)

从操作实例“UI界面实现SSH登录服务器并执行命令监控”中学习到的线程与线程间参数传递方法记录的更多相关文章

  1. Python通过ssh连接服务器并执行命令

    [本文出自天外归云的博客园] 脚本示例如下: # coding:utf-8 import time,paramiko,re,StringIO def exec_shell(command): ''' ...

  2. expect远程登录服务器并执行命令

    #!/usr/bin/expectset timeout 120            #设置执行超时时间,任何输入120秒后退出set password "password"  ...

  3. Mac 无密码 SSH 登录服务器

    Mac 无密码 SSH 登录服务器,只需要简单三步,不再需要记住账号密码,快速进入服务器 第一步,生成密钥对 在当前用户下创建.ssh目录 mkdir ~/.ssh 使用命令ssh-keygen生成密 ...

  4. ssh登录服务器提示错误no hostkey alg

    ssh登录服务器提示错误no hostkey alg ssh root@192.168.1.100 -vvv 提示失败: no hostkey alg 登录到192.168.1.100服务器 rm - ...

  5. centos linux ip地址无法连接数据库,ssh登录服务器时必须使用22端口

    问题一:连接数据库时直接使用ip地址无法连接,必须使用ssh方式才能连接? 问题二:ssh登录服务器时必须使用22端口,在/etc/ssh/sshd_config中添加了10086端口,防火墙中已开启 ...

  6. ssh远程连接linux服务器并执行命令

    详细方法: SSHClient中的方法 参数和参数说明 connect(实现ssh连接和校验) hostname:目标主机地址 port:主机端口 username:校验的用户名 password:登 ...

  7. Linux centosVMware运行告警系统、分发系统-expect讲解、自动远程登录后,执行命令并退出、expect脚本传递参数、expect脚本同步文件、指定host和要同步的文件、shell项目-分发系统-构建文件分发系统、分发系统-命令批量执行

    一运行告警系统 创建一个任务计划crontab -e 每一分钟都执行一次 调试时把主脚本里边log先注释掉 再次执行 没有发现502文件说明执行成功了,每日有错误,本机IP 负载不高 二.分发系统-e ...

  8. python paramiko实现ssh上传下载执行命令

    paramiko ssh上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...

  9. java ssh远程服务器并执行多条shell命令

    java ssh远程服务器并执行多条命令 import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  10. shell脚本批量ssh登陆主机并执行命令

    shell脚本批量ssh登陆主机并执行命令 今天在客户现场遇到了这个问题,客户没有管理工具,无法批量登陆主机下发命令,几个个C段啊,让我一个一个登陆,.................. 所以写了个s ...

随机推荐

  1. canvas 模糊

    让style以50%的效果展示 创建2倍的canvas <!DOCTYPE html> <html> <head> <meta charset="u ...

  2. css如何实现(animation)跑马灯效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 项目实训 DAY17-18

    第一天,与后端的同学交接,先跟他说了怎么安装依赖库,弄完后他那边运行有些问题. 第二天,后端的同学说可以运行但无法部署,我思考后一起商量着只做静态模型(本身不同的两张图片只有input有区别),然后添 ...

  4. 【python_PAT_乙类】1013_数素数 ,Python运行超时解决方案

    题目: 令 P​i​​ 表示第 i 个素数.现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数. 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔. 输出格 ...

  5. 关于DELL服务器风扇远程控制失效

    关于DELL服务器风扇远程ipmitool控制失效 去年12月,公司突然断电,公司有一台DELL 720XD服务器,自从断电之后,使用ipmitool命令行控制风扇速度就失效了,因为之前忙其他的项目, ...

  6. vite+vue3批量导入静态资源图片;动态绑定大量图片

    vite版本:vite3:vue版本:vue3 打包上线后发现,动态绑定的图片皆失效. 单图可用 import 导入解决,但是若有大量图片,一一导入则耗时耗力. vue2+webpack 可用 req ...

  7. 01. JavaScript基础知识

    一.JavaScript简介   JavaScript 是一门解释型编程语言,解释型编程语言指代码不需要手动编译,而是通过解释器边解释边执行.所以,要运行 JS,我们需要在计算机中安装 JS 的解释器 ...

  8. 2003031120—廖威—Python数据分析第七周作业—MySQL的安装以及使用

    项目    内容 课程班级博客链接 https://edu.cnblogs.com/campus/pexy/20sj 这个作业要求链接  https://edu.cnblogs.com/campus/ ...

  9. python 循环 类型转换

  10. 记 第一次linux下简易部署 django uwsgi nginx

    1.首先确定django项目是跑起来的 2.装nginx  uwsgi ,网上教程一大堆 3.uwsgi的配置了 我是通过ini启动的 随意找个顺手的文件夹创建uwsgi.ini文件 我是在/home ...