快速进修Python指南之网络编程及并发编程

 更新时间:2024年02月01日 14:07:22   作者:努力的小雨  
这篇文章主要为大家介绍了Java开发者如何快速进修Python指南之网络编程及并发编程实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

今天我们将对网络编程和多线程技术进行讲解,这两者的原理大家都已经了解了,因此我们主要关注的是它们的写法区别。虽然这些区别并不是非常明显,但我们之所以将网络编程和多线程一起讲解,是因为在学习Java的socket知识时,我们通常会将它们结合使用,以实现服务器对多个客户端连接的阻塞IO的处理。虽然我是这样解释的,但是Python在控制连接数方面更加友好,相对于Java来说更加便捷。好了,废话不多说,让我们开始今天的讲解吧。

socket及线程

这里我将给大家举一个例子,同时也会指出一些需要注意的问题,以帮助Java同学们避免再次遇到这些坑。

import socket
import multiprocessing
import time
# 创建互斥锁
lock = multiprocessing.Lock()
# 处理客户端请求的函数
def handle_client(conn, addr):
    print(f"Connected to {addr}")
    time.sleep(100)
# 创建服务器
def create_server():
    # 创建socket对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 绑定地址和端口
    server_addr = ("localhost", 8000)
    server_socket.bind(server_addr)
    # 监听连接
    server_socket.listen(1)
    print("Server started. Listening for connections...")
    while True:
        # 接受客户端连接
        conn, addr = server_socket.accept()
        handle_client(conn, addr)
        # 创建进程处理客户端请求
        process = multiprocessing.Process(target=handle_client, args=(conn, addr))
        process.start()
if __name__ == '__main__':
    # 启动服务器
    print("启动服务器")
    create_server()

以下是客户端的代码

import socket
import time
client = socket.socket() #创建socket对象
host = '127.0.0.1' #服务端ip
port = 8000 #服务端ip端口
client.connect((host, port)) #根据服务端地址,建立连接
print('client对象:', client) #查看socket对象属性
time.sleep(100)

#client.close() #关闭与服务端的连接

上面的例子已经涵盖了我今天要讲的内容,所以没有太多需要补充的了。

与Java的一些区别

首先,Python使用multiprocessing来创建多线程,当然还有其他的包可以实现相同的功能,这里就不一一赘述了。另外,还有一个需要注意的地方是,在Python中使用if __name__ == '__main__':语句时,你必须将其写在主函数中,而不要写在你定义的子函数中。为什么要这样写呢?原因是,当调用process.start()后,Python会重新执行当前文件,也就是说如果你将if __name__ == '__main__':这句话写在非主函数中,create_server()它将会被再次调用。而使用if __name__ == '__main__':语句可以判断是否是主函数执行,如果不是,则会过滤掉这部分代码。虽然这个机制可能有些令人困惑,但是去深入了解其执行原理并不是必要的,所以大家要记住这个要点。这张图显示的是再次被调用是的名字:

第二:在Python官网中指出,通过调用server_socket.listen(1)可以启动一个服务器,用于接受连接并将未接受的客户端连接放入等待队列中。需要注意的是,等待队列的大小由listen(n)中的参数n+1指定,并不代表实际监听到的客户端连接。如果超过队列大小的连接尝试进入,服务器将直接报错。

总结

今天我们学习了网络编程和多线程技术的写法区别。我们主要关注了在Java中使用socket和多线程结合实现服务器处理多个客户端连接的阻塞IO的方法,以及在Python中使用multiprocessing模块创建多线程的方式。通过一个实例来说明了这些概念,并指出了需要注意的问题。其实了解了这些基本用法后,我们还能够自己实现许多其他功能,例如了解了线程之后,就知道会有队列的概念,然后可以尝试自己实现一个生产者消费者队列。这与学习Java的路线非常相似,并且我们拥有丰富的开发经验,因此我们只需要关注语法方面的学习即可~~

以上就是Java开发者如何快速进修Python指南之网络编程及并发编程的详细内容,更多关于Python并发网络编程的资料请关注脚本之家其它相关文章!

相关文章

  • 使用python实现学生信息管理系统

    使用python实现学生信息管理系统

    这篇文章主要为大家详细介绍了使用python实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • Python中values()函数用法简单示例

    Python中values()函数用法简单示例

    这篇文章主要给大家介绍了关于Python中values()函数用法的相关资料,python内置的values()函数返回一个字典中所有的值,文中给出了代码示例,需要的朋友可以参考下
    2023-09-09
  • Python 数据处理库 pandas 入门教程基本操作

    Python 数据处理库 pandas 入门教程基本操作

    pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库。本文是对Python 数据处理库 pandas 入门教程,非常不错,感兴趣的朋友一起看看吧
    2018-04-04
  • 详解python uiautomator2 watcher的使用方法

    详解python uiautomator2 watcher的使用方法

    这篇文章主要介绍了python uiautomator2 watcher的使用方法,该方是基于uiautomator2如下版本进行验证,本文给大家介绍的非常详细,需要的朋友可以参考下
    2019-09-09
  • python3 MKL库 安装使用教程

    python3 MKL库 安装使用教程

    这篇文章主要介绍了python3 MKL库 安装使用教程的相关资料,需要的朋友可以参考下
    2023-11-11
  • 详解Python 多线程 Timer定时器/延迟执行、Event事件

    详解Python 多线程 Timer定时器/延迟执行、Event事件

    这篇文章主要介绍了Python 多线程 Timer定时器/延迟执行、Event事件的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Python安装和配置uWSGI的详细过程

    Python安装和配置uWSGI的详细过程

    这篇文章主要介绍了Python uWSGI 安装配置,本文主要介绍如何部署简单的 WSGI 应用和常见的 Web 框架,以 Ubuntu/Debian 为例给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Python中TypeError:unhashable type:'dict'错误的解决办法

    Python中TypeError:unhashable type:'dict'错误的解决办法

    这篇文章主要给大家介绍了关于Python中TypeError:unhashable type:'dict'错误的解决办法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-04-04
  • 如何搭建pytorch环境的方法步骤

    如何搭建pytorch环境的方法步骤

    这篇文章主要介绍了如何搭建pytorch环境的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Pytorch加载部分预训练模型的参数实例

    Pytorch加载部分预训练模型的参数实例

    今天小编就为大家分享一篇Pytorch加载部分预训练模型的参数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论