穿越楚楚世界楚楚集团

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
热搜: 活动 交友 discuz
查看: 152|回复: 3

Python编程:微信群聊程序的开发与进/线程知识汇总(附代码)

[复制链接]

1万

土地

0

官位

0

英雄

平民

Rank: 2Rank: 2

积分
101
发表于 2019-11-16 23:14:08 | 显示全部楼层 |阅读模式
楚楚师徒0

欢迎您穿越!Q号微信号直接登陆

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本文承接上篇文章的客户端—服务器谈天对话步调,进一步设计开辟了微信群聊的python模拟步调,涉及的python知识点为:Python谈天步调与TCP Socket知识大汇总和进程与线程编程!
本文的内容章节为:

  • 群聊对话演示与设计布局
  • 进程与线程详解与代码演示
  • Python群聊步调代码详解
  • 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:线程所属的线程组,该参数尚未实现,使用默认值None
● target:线程要绑定的功能函数
● args :元组形式,元素的顺序与范例必须与target绑定函数的参数一致,即元组的第一个元素传给target函数的第一个参数,第二个元素传给target函数的第二个参数……
● kwargs:字典形式,以key为target指定的函数传入参数
● daemon:确定所创线程是否为子女线程
三、Python群聊步调代码详解

下面的代码需要以上篇文章:Python谈天步调与TCP Socket知识大汇总为底子,方能深刻明确!
群聊服务器代码:

                               
登录/注册后可看大图

群聊服务器代码

剖析:

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

                               
登录/注册后可看大图

群聊客户端代码

剖析:

  • 主进程不绝吸收用户输入信息并举行发送
  • 子线程不绝吸收群聊服务器广播的信息
四、Python群聊步调代码获取

感兴趣的读者可以通过以下方式获取文中代码以供学习:

  • 私信复兴“群聊代码”
  • 私信复兴“群聊代码”
  • 私信复兴“群聊代码”
如若获取失败,请私信留言,我们将重新发送代码!文中如有任何不妥之处,还请读者于评论区交换意见,在此提前感谢!

                               
登录/注册后可看大图

3Q





来源网络
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

1万

土地

0

官位

0

英雄

正九品下下县丞

Rank: 7Rank: 7Rank: 7

积分
151
发表于 2019-11-17 01:49:45 | 显示全部楼层
楚楚师徒0
看了这么多帖子,第一次看到这么有深度了!

1万

土地

0

官位

0

英雄

正九品下下县丞

Rank: 7Rank: 7Rank: 7

积分
151
发表于 2019-12-10 11:44:03 | 显示全部楼层
楚楚师徒0
收藏了,很不错的内容!

1万

土地

0

官位

0

英雄

正九品下下县丞

Rank: 7Rank: 7Rank: 7

积分
150
发表于 2019-12-28 03:40:29 | 显示全部楼层
楚楚师徒0
信楼主,考试不挂科!
提示:您本次回帖将获得额外奖励0银元宝(用户组奖励0,勋章奖励0,主题帖数奖励0,发帖数奖励0。)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站1998-02-28至今已运行9556天。欢迎光临!

QQ|大事记|Archiver|手机版|小黑屋|扬州楚楚网络科技有限公司版权所有 ( 苏ICP备17038799号-2|32100102010032

GMT+8, 2024-4-28 11:50 , Processed in 1.586228 second(s), 101 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表