python--threading 多线程的简单应用
来源:互联网 发布:复古相机软件 编辑:程序博客网 时间:2024/06/16 23:37
最近做一个基于itchat的微信机器人,涉及到了点多线程运行的事项。
基于itchat库进行的机器人具有信息监听功能,代码如下。
@itchat.msg_register([TEXT],isFriendChat=True)def message_reply(msg): try: FromUserName = msg['FromUserName'] except: print('获取FromUserName失败') # admins_username为管理员账号的一个list if FromUserName in admins_username: if msg['Text'] == '更新数据': cont0 = '开始更新数据' print(cont0) itchat.send_msg(msg=cont0, toUserName=FromUserName) # 新建线程用来单独运行更新程序 update_threading = threading.Thread(target=updatedata,args=('2',)) update_threading.start() else: message = "小助手运行正常,可以接收到信息,请发送指令:'更新选品库' or '启动发送' " itchat.send_msg(msg=message, toUserName=FromUserName)itchat.auto_login(hotReload=True)itchat.run()
itchat 通过itchat.run()会开启监听程序运行,这个时候如果直接在reply里面运行一段长时间的程序,他会暂停掉监听的功能,为了保证互相不影响,所以需要引入多线程。
方法就是
import threadingupdate_threading = threading.Thread(target=updatedata,args=('2',))update_threading.start()
这里参数target = updatedata是名为updatedata的function,而args是加入的参数。然后使用start()他就可以单独运行了。再通过微信命令调用运行其他进程的时候都可以这样做,解决线程占用的问题。
下面放一段相关的资料
python–threading多线程总结
threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。python当前版本的多线程库没有实现优先级、线程组,线程也不能被停止、暂停、恢复、中断。
threading模块提供的类:
Thread, Lock, Rlock, Condition, [Bounded]Semaphore, Event, Timer, local。
threading 模块提供的常用方法:
threading.currentThread(): 返回当前的线程变量。
threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
threading 模块提供的常量:
threading.TIMEOUT_MAX 设置threading全局超时时间。
Thread类
Thread是线程类,有两种使用方法,直接传入要运行的方法或从Thread继承并覆盖run():
创建线程的两种方法
构造方法:
Thread(group=None, target=None, name=None, args=(), kwargs={})
group: 线程组,目前还没有实现,库引用中提示必须是None;
target: 要执行的方法;
name: 线程名;
args/kwargs: 要传入方法的参数。
实例方法:
isAlive(): 返回线程是否在运行。正在运行指启动后、终止前。
get/setName(name): 获取/设置线程名。
start(): 线程准备就绪,等待CPU调度
is/setDaemon(bool): 获取/设置是后台线程(默认前台线程(False))。(在start之前设置)
如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,主线程和后台线程均停止
如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止
start(): 启动线程。
join([timeout]): 阻塞当前上下文环境的线程,直到调用此方法的线程终止或到达指定的timeout(可选参数)。
- python--threading 多线程的简单应用
- python多线程中互斥锁Threading.Lock的简单应用
- Python的多线程threading模块
- python的多线程运用Threading
- python多线程thread/threading的使用
- python 多线程threading模块的使用
- Python 多线程 Threading模块
- Python threading多线程编程
- python --- 多线程之threading
- Python多线程1:threading
- python 多线程threading
- python threading多线程模块
- python多线程threading
- python 多线程(threading)
- python多线程-threading模块
- Python多线程-threading
- 32 Python 多线程 - threading
- Python threading 多线程
- Nginx初探
- angular 表格跨行
- CentOS安装jdk
- Android,App 常用图标尺寸规范
- ReactNative环境搭建与集成到自己android项目以及重新启动adb
- python--threading 多线程的简单应用
- 安卓---TextView基本使用
- Egret的滚动list列表如何使用
- redis 热搜词 搜索存储
- sqlite基础学习
- 关于Python的super用法以及mro机制
- Quartz 2D效果演练
- bzoj 1457: 棋盘游戏 sg函数
- SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱