Python并发编程:多线程-开启线程的两种方式

一 threading模块介绍

multiprocess模块完全模仿了threading模块的接口,二者在使用层面,有很大的相似性

二 开启线程的两种方式

方式一

1

2

3

4

5

6

7

8

9

10

11

12

13

from threading import Thread

import time

def sayhi(name):

    time.sleep(2)

    print("%s say hello" % name)

if __name__ == '__main__':

    = Thread(target=sayhi, args=('mike', ))

    t.start()

    print("主线程")

  方式二

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

from threading import Thread

import time

class Sayhi(Thread):

    def __init__(self, name):

        super().__init__()

        self.name = name

    def run(self):

        time.sleep(2)

        print('%s say hello' % self.name)

if __name__ == '__main__':

    = Sayhi('mike')

    t.start()

    print("主线程")

  

三 练习题

1、基于多线程实现并发的套接字通信

客户端:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

from socket import *

ip = '127.0.0.1'

port = 8081

= socket(AF_INET, SOCK_STREAM)

c.connect((ip, port))

while True:

    msg = input("请输入客户端的信息").strip()

    if not msg:

        continue

    c.send(msg.encode('utf-8'))

    data = c.recv(1024)

    print("收到的信息:", data.decode('utf-8'))

  

服务端:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

from socket import *

from threading import Thread

def talk(conn):

    while True:

        try:

            data = conn.recv(1204)

            if not data:

                break

            conn.send(data.upper())

        except ConnectionResetError:

            break

    conn.close()

def server(ip, port):

    server_socket = socket(AF_INET, SOCK_STREAM)

    server_socket.bind((ip, port))

    server_socket.listen(1)

    while True:

        conn, addr = server_socket.accept()

        = Thread(target=talk, args=(conn,))

        p.start()

    conn.close()

if __name__ == '__main__':

    server('127.0.0.1'8081)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot+Vue全栈开发-刘老师教编程(b站)(二)

创建SpringBoot项目 1.配置maven 出现bug java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /D:/maven/repository/org/springframework/boot/spring-boot/3.0.0/spring-boot-3.0.0.jar!/org/springframework/boot/SpringApplication.class 类…

Web安全之接口鉴权

目录 接口鉴权定义 为什么会有cookie还有session还有token这种技术的存在?

FPGA高端项目:FPGA基于GS2971的SDI视频接收转HDMI输出,提供3套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI图像缩放应用本方案的SDI纯verilog图像缩放视频拼接应用本方案的SDI HLS图像缩放视频拼接应用本方案的SDI视频编码动态字符叠加输出应用本方案的SDI视频编码多路视频融合视频叠加应用本方案的SDI视频…

云计算与边缘计算:有何不同?

公共云计算平台可以帮助企业充分利用全球服务器来增强其私有数据中心。这使得基础设施能够扩展到任何位置,并有助于计算资源的灵活扩展。混合公共-私有云为企业计算应用程序提供了强大的灵活性、价值和安全性。 然而,随着分布在全球各地的实时人工智能应…

mac命令行下计算文件SHA-256散列值

源起 从国内的第三方网站下载了Android sutiod的zip包下载地址,为了安全起见还是得跟Android官网上的对应的zip包的SHA值做下对比。以前是经常使用md5命令的,所以理论在命令行下应该是有对应的命令行工具可以计算SHA值的。后来搜索到可以用 shasum命令来…

Ubuntu制作本地安装源

Ubuntu制作本地安装源 应用场景离线安装包的制作(可联网电脑)更新源安装软件 生成依赖关系在另外一台Ubuntu上离线安装安装 使用deb http方式安装安装nginx更新ubuntu数据库,并安装应用 应用场景 当我们需要在多台电脑安装同一个软件,并且软…

目标检测——车辆数据集

一、背景介绍 VOC2005车辆数据集是PASCAL VOC挑战赛中的一个重要组成部分,该挑战赛始于2005年,旨在为计算机视觉领域的研究者和开发者提供一个统一的、标准化的评估平台。PASCAL VOC挑战赛不仅推动了图像识别、目标检测、图像分割等技术的发展&#xff…

项目优化相关

1闪屏优化 1、问题:通过js引入css文件打包后js通过生成style标签的形式引入,网络过慢的情况下页面就会出现先显现html后展现样式的状况 Css 文件目前被打包到 js 文件中,当 js 文件加载时,会创建一个 style 标签来生成样式 这样对…

mysql作业

1.openEuler 二进制方式安装MySQL 8.0.x [rootnode1 ~]# wget -c https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz #获取安装包 [rootnode1 ~]# dnf install tar xz -y#安装 [rootnode1 ~]# groupadd -g 27 -r mysql [rootnode1 ~…

类和对象(1)——开启C++学习之旅

目录 一、过程性编程和面向对象编程 二、类的定义 2.1类的定义语法 2.2类的定义方式 三、类的访问限定符 四、封装 五、类对象模型 5.1类的实例化 5.2类对象的存储方式 六、this指针 6.1什么是this指针 6.2 this指针的特性 一、过程性编程和面向对象编程 C语言是面…

华为校招机试题库2024年(JAVA、Python、C++)

我是一名软件开发培训老师,我的学生已经有上百人通过了华为校招机试,学生们每次考完试,会把题目拿出来一起交流分享。 华为校招机试共三道题目: 100分,200分,300分, 满分600分,时…

通过elementUI学习vue

<template><el-radio v-model"radio" label"1">备选项</el-radio><el-radio v-model"radio" label"2">备选项</el-radio> </template><script>export default {data () {return {radio: 1}…

南京观海微电子----Verilog基础(一)——数据类型、运算符

1. 数据类型 1.1 常量 整数&#xff1a;整数可以用二进制b或B&#xff0c;八进制o或O&#xff0c;十进制d或D&#xff0c;十六进制h或H表示&#xff0c;例如&#xff0c;8’b00001111表示8位位宽的二进制整数&#xff0c;4’ha表示4位位宽的十六进制整数。 X和Z&#xff1a;X…

算法沉淀——动态规划之子序列问题(下)(leetcode真题剖析)

算法沉淀——动态规划之子序列问题 01.最长定差子序列02.最长的斐波那契子序列的长度03.最长等差数列04.等差数列划分 II - 子序列 01.最长定差子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-difference/ 给你一个整数数…

编码技巧——Springboot工程加密yml配置/Maven引入本地二方包

1. 背景 基于Springboot的工程项目&#xff0c;通常很多信息都是在application.yml中直接明文配置的&#xff0c;比如数据库链接信息&#xff0c;redis链接信息等&#xff1b; 为了安全考虑&#xff0c;公司打算将yml配置文件中的数据库连接信息的账号&#xff0c;密码进行加…

【Django】model模型—模型属性与方法

模型属性 模型当中最重要的属性是 Manager。它是 Django 模型和数据库查询操作之间的接口&#xff0c;并且它被用作从数据库当中 获取实例&#xff0c;如果没有指定自定义的 Manager 默认名称是 objects。Manager 只能通过模型类来访问&#xff0c;不能通过模型实例来访问。 模…

2024-02-25 Unity 编辑器开发之编辑器拓展5 —— Selection

文章目录 1 常用静态成员2 常用静态方法 ​ Selection 主要用来获取当前 Unity 编辑器中选择的对象&#xff0c;只能用于编辑器开发中。 1 常用静态成员 静态成员说明Selection.activeObject获取当前在面板上选择的游戏物体 Object&#xff0c;未选择则返回 Null。选择多个则返…

mini-spring|关于Bean对象作用域以及FactoryBean的实现和使用

需求 FactoryBean 直接配置FactoryBean 获取FactoryBean中的Bean对象 FactoryBean的getObject方法通过反射获取Bean对象 由此省去对实体Dao类的定义 解决方法 对外提供一个可以二次从 FactoryBean 的 getObject 方法中获取对象的功能即可 整体架构 整个的实现过程包括了两部…

Redis持久化的两种方式RDB和AOF详解

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 以下内容为学习 Redis 过程中的笔记 文章目录 Redis持久化RDB&#xff08; Redis DataBase &#xff09;触发机制&#xff1a;如何恢复rbd文件&#xff1a;优点&#xff1a;缺点&#xff1a; AOF &…

图形管道(pipeline)

9.3 图形管道 9.3.1 pipeline ​ 图形管道是将 3D 坐标转换为 2D 像素&#xff0c;图形管道可以分为两大部分&#xff1a;第一部分将 3D 坐标转换为 2D 坐标&#xff0c;第二部分将 2D 坐标转换为实际的彩色像素。 Vertex Data -----> Vertex SHADER -------->GEOMETR…