从操作实例“UI界面实现SSH登录服务器并执行命令监控”中学习到的线程与线程间参数传递方法记录
从操作实例“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登录服务器并执行命令监控”中学习到的线程与线程间参数传递方法记录的更多相关文章
- Python通过ssh连接服务器并执行命令
[本文出自天外归云的博客园] 脚本示例如下: # coding:utf-8 import time,paramiko,re,StringIO def exec_shell(command): ''' ...
- expect远程登录服务器并执行命令
#!/usr/bin/expectset timeout 120 #设置执行超时时间,任何输入120秒后退出set password "password" ...
- Mac 无密码 SSH 登录服务器
Mac 无密码 SSH 登录服务器,只需要简单三步,不再需要记住账号密码,快速进入服务器 第一步,生成密钥对 在当前用户下创建.ssh目录 mkdir ~/.ssh 使用命令ssh-keygen生成密 ...
- ssh登录服务器提示错误no hostkey alg
ssh登录服务器提示错误no hostkey alg ssh root@192.168.1.100 -vvv 提示失败: no hostkey alg 登录到192.168.1.100服务器 rm - ...
- centos linux ip地址无法连接数据库,ssh登录服务器时必须使用22端口
问题一:连接数据库时直接使用ip地址无法连接,必须使用ssh方式才能连接? 问题二:ssh登录服务器时必须使用22端口,在/etc/ssh/sshd_config中添加了10086端口,防火墙中已开启 ...
- ssh远程连接linux服务器并执行命令
详细方法: SSHClient中的方法 参数和参数说明 connect(实现ssh连接和校验) hostname:目标主机地址 port:主机端口 username:校验的用户名 password:登 ...
- Linux centosVMware运行告警系统、分发系统-expect讲解、自动远程登录后,执行命令并退出、expect脚本传递参数、expect脚本同步文件、指定host和要同步的文件、shell项目-分发系统-构建文件分发系统、分发系统-命令批量执行
一运行告警系统 创建一个任务计划crontab -e 每一分钟都执行一次 调试时把主脚本里边log先注释掉 再次执行 没有发现502文件说明执行成功了,每日有错误,本机IP 负载不高 二.分发系统-e ...
- python paramiko实现ssh上传下载执行命令
paramiko ssh上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...
- java ssh远程服务器并执行多条shell命令
java ssh远程服务器并执行多条命令 import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...
- shell脚本批量ssh登陆主机并执行命令
shell脚本批量ssh登陆主机并执行命令 今天在客户现场遇到了这个问题,客户没有管理工具,无法批量登陆主机下发命令,几个个C段啊,让我一个一个登陆,.................. 所以写了个s ...
随机推荐
- Flink生产数据到Kafka频繁出现事务失效导致任务重启
在生产中需要将一些数据发到kafka,而且需要做到EXACTLY_ONCE,kafka使用的版本为1.1.0,flink的版本为1.8.0,但是会很经常因为提交事务引起错误,甚至导致任务重启 kafk ...
- 多线程—ThreadLocal
一.ThreadLocal的含义 线程的变量副本(就像命名一样),每个线程隔离. 二.ThreadLocal的结构 每个Thread都有自己的ThreadLocalMap,ThreadLocalMap ...
- Linux 使用ssh服务管理远程主机
配置网络服务 配置网卡的4种方法: 创建网络会话 RHEL和CentOS系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态.可以使用 ...
- AX2012 循环读取DataSource的记录
static void LoopFormDataSource(Args _args) { FormDataSource formDataSource; SalesLine salesLineSel, ...
- MySQL8.0使用GROUP BY的问题
当使用group by的语句中,select后面跟的列,在group by后面没有时,会报以下错误: Expression #2 of SELECT list is not in GROUP BY c ...
- win 端口占用
netstat -aon|findstr "8080" 查看端口 TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 11468 TCP 172.27.232 ...
- 关于JUnit
目录 一.单元测试 二.在LAB中的常用方法 一.单元测试 什么是单元测试呢?单元测试就是针对最小的功能单元编写测试代码.Java程序最小的功能单元是方法,因此,对Java程序进行单元测试就是针对单个 ...
- 枚举类list序列化与反序列化
//序列化 public class AuthTypeEnumListJsonSerializer extends JsonSerializer<List> { @Override pub ...
- 学习JavaScript 第二周
分支结构中的switch switch(值&条件表达式){ case 值: 操作: break; case 值: 操作: break; ... default: 默认操作 } switch根据 ...
- DHCP分配IP的流程
1.DHCP客户端以广播的形式发送DHCP Discover报文 2.所有的DHCP服务端都可以接收到这个DHCP Discover报文,所有的DHCP服务端都会给出响应,向DCHP客户端发送一个DH ...