本文承接上篇文章的客户端—服务器聊天对话程序,进一步设计开发了微信群聊的python模拟程序,涉及的python知识点为:Python实战:聊天软件开发与TCP/Socket编程知识汇总(附代码)和 进程与线程编程!

本文的内容章节为:

群聊对话演示与设计结构进程与线程详解与代码演示Python群聊程序代码详解

python群聊程序

一、群聊对话演示与设计结构

直接来看已经完成的python群聊程序对话演示结果图:

该python群聊对话功能为:

小明,小兰,小玲,小红都是群成员每位群成员向群内发送信息,其他成员都能收到每启动一个客户端程序,用户即可进入群聊 (一个窗口代表一个成员)下面用一张图简述群聊功能:

群聊中的成员向群内发送消息是单独发送给群聊服务器的,不是直接发送到群聊的群聊服务器收到成员发送的消息后将该消息向群内转发,实现群聊

群聊示意图

下图是本文中python群聊程序的设计结构图(即运行方式),供大家参考:

群聊程序的设计结构

二、进程与线程详解及代码演示

在介绍具体代码之前,先来为大家详细总结下操作系统中进程与线程的相关知识以及python演示代码!

★进程:操作系统中运行的每个程序可视为一个进程,可独立运行,是操作系统分配资源的基本单位,如QQ程序。

★线程:轻量级的进程,是进程的组成部分,是操作系统执行功能的基本单元,如QQ中的每个聊天窗口。

★进程与线程的区别与联系:

一个进程可包含多个线程,一个线程只能属于一个进程同一个进程中的各线程之间共享其进程下的资源多个进程可以并发启动,同一个进程中的多个线程也可并发启动同一进程下的一个线程被销毁不会影响其他线程进程结束时,其所有线程将也被销毁★ 现实中的进程与线程:

计算机的CPU承担了操作系统所有程序的计算工作,好比一座大型工厂。该工厂的电力有限,每次只能供给一个车间的工作,即一个车间开工时,其他车间无法开工,好比CPU在任一时刻都只能有一个任务在运行,而车间就好比进程,表示工厂(CPU)的资源分配基本单元。

一个车间(进程)中可以拥有多位员工,员工就好比线程(一个进程可包含多个线程),一个车间中的所有资源是员工间共享的(线程共享父进程下的资源)。

但某个资源被一个员工占用时其他员工将无法使用,必须等待当前员工使用完毕才能获取该资源,如一个员工进入洗手间会锁上门,那么其他员工必须等待其方便结束才能使用该洗手间,这把锁可视为线程间的资源“互斥锁”,避免多个线程同时访问同一资源引发冲突。

还有一个“信号量”的介绍,限于篇幅,本文不做赘述,感兴趣的读者可自行搜索:进程线程图解!

★Python代码演示进程与线程:

示例代码:

进程线程代码演示

进程创建线程是通过threading模块Thread类来实现的,即threading.Thread类,其参数详解如下:

__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *,daemon=None)

group:线程所属的线程组,该参数尚未实现,使用默认值Nonetarget:线程要绑定的功能函数args :元组形式,元素的顺序与类型必须与target绑定函数的参数一致,即元组的第一个元素传给target函数的第一个参数,第二个元素传给target函数的第二个参数……kwargs:字典形式,以key为target指定的函数传入参数daemon:确定所创线程是否为后代线程三、Python群聊程序代码详解

下面的代码需要以上篇文章:以上篇文章-Python实战:聊天软件开发与TCP/Socket编程知识汇总(附代码)为基础,便于深刻理解!

★群聊服务器代码:

群聊服务器代码

解析:

群聊服务器没有限制请求连接的用户个数(listen())每个请求连接的用户socket都将被群聊服务器添加到列表:socket_clientlist群聊服务器由线程不断读取已连接用户的输入信息并进行广播服务器收到群成员发送的消息后,向socket_clientlist中保存的所有用户socket,也就是所有群成员群发这条消息,就完成了一个成员把消息发送到群聊的功能,模拟了群聊★ 群聊客户端代码:

群聊客户端代码

解析:

主进程不断接收用户输入信息并进行发送子线程不断接收群聊服务器广播的信息

四、Python群聊程序代码获取

感兴趣的读者可以评论区留言获取文中代码以供学习!文中如有任何不妥之处,还请读者于评论区交流意见,在此提前感谢!

谢谢

python开发微信群_Python编程:微信群聊程序的开发与进/线程知识汇总(附代码)相关推荐

  1. 用python做一个木马_Python编程简单的木马程序(转载于乌云中)

    Python编程简单的木马程序 light·2015/01/26 10:07 0x00准备好了 本文的内容仅用于研究和研究,不得用于非法目的! 这一次,我们使用Python编写了一个简单的木马,它具有 ...

  2. python无师自通配套资源_Python编程无师自通:专业程序员的养成

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  3. 限时团购,6.9折:《微信开发深度解析:公众号、小程序高效开发秘籍》推荐序

    全书由目 Senparc.Weixin SDK 作者苏震巍历时 2 年完成,涵盖了开发微信公众号及小程序需要用的的各项后端开发技能.技巧.避坑提示,以及 Senparc.Weixin SDK 微信公众 ...

  4. python自动添加微信好友_Python实现微信自动好友验证,自动回复,发送群聊链接方法...

    引言: 一开始二维码加群,但是呢,这个东西隔一段时间会过期,我需要 每隔一段时间去更新二维码,然后当群人数超过100人了,只能邀请进群, 这个时候就需要别人添加我为好友,然后我通过,打开交流群,添加成 ...

  5. python社区微信群_Python 打造微信群聊天机器人(带操作界面)-Go语言中文社区...

    前言 这几天我的一个小伙伴问我能不能给 Ta 做一个配置灵活的微信群聊天机器人,之前了解过 itchat 库的使用,我就爽快的答应了,花了一个晚上,终于做出了雏形. 电脑上运行程序如下: 手机上的信息 ...

  6. python输出2000闰年_python编程如何求2000到2500闰年?_后端开发

    python如何编写阶乘?_后端开发 python编写阶乘的方法:首先定义一个递归函数实现求阶乘功能:然后定义一个列表,将for遍历得到的阶乘结果放到列表:最后使用[sum()]函数求和即可. pyt ...

  7. python教程很详细_Python编程入门教程:从入门到高级,非常详细

    本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...

  8. python简单笔试题_python编程简单笔试题

    Python编程简单的书面测试问题,答案,适合初学者学习和使用.内部信息,严禁传播指数+ = 1.你需要的代码线03年和06郑史.如何正确的代码?使用下拉菜单中选择选项为每个问题的答案的基础上提供的信 ...

  9. python手机中文版下载_Python编程下载_Python中文版下载v2.7.18_360手机助手专区

    Python(派森)是一种拥有强大功能的面对对象.直译式电脑编程语言软件,语法清晰简洁,类似于PHP和Perl语言,能够就简单快速完成很多常见的任务,用来缩进定义语句. Python(派森) [软件功 ...

最新文章

  1. 2021年中国工业互联网安全大赛核能行业赛道writeup之数据库登录
  2. QT自定义控件之倒计时控件
  3. python怎么设置函数超时时间_在python运行时为函数设置超时秒数
  4. 软件项目管理0819:一页项目管理——风险,定性问题和其他评价指标
  5. eayUi panel实现上一页下一页
  6. QT的QDBusReply类的使用
  7. 【Qt】QModbusPdu类
  8. Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结
  9. win10安装部署网络测试工具 NetCat 用于Spark跑测试
  10. vs2019编写Linux c/c++项目
  11. HDU 2202 计算几何
  12. 可穿戴在线展持续升温:聚焦产业热点 畅谈核心技术发展
  13. python将图片转换为Framebuffer裸数据格式(终端显示图片)
  14. 指针函数的一个范例,在单片机上运用它能让您的程序结构更明朗清晰,层次感强...
  15. indesign教程,了解图层
  16. Atitit 数据库表文档生成解决方案
  17. 用python写的游戏有哪些_想用Python写个小游戏?这个项目里有21个例子
  18. 一文速学-时间序列分析算法之一次移动平均法和二次移动平均法详解+实例代码
  19. hub设备_铝合金机身,既是HUB也是充电器,ORICO A3H7体验
  20. Arduino提高篇01—点亮OLED显示屏

热门文章

  1. 常见的五大数据分析模型
  2. SpringBoot实现每天给对象发送情话
  3. python用unittest+HTMLTestRunner的框架测试并生成测试报告
  4. 计算机的击键方法教学教案,学习敲击L键计算机教案
  5. 刘志军的高铁遗产 ——看看日本高铁是怎么建起来的
  6. 5个方法助设计师保持创造力
  7. supported for git 2.9+
  8. php 扫码入库软件下载,php简易扫码付教育收费系统
  9. golang 记一次data race排查过程
  10. 360n4s普通版Android7,360手机N4S有几个版本 360手机N4S各版本区别对比