Python socket、multiprocessing和threading模块的使用

1.socket

Python用socket模块可以实现简单的网络通信

1.1创建客户端

import socket def client_socket(): # 定义客户端 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置服务端和ip client.connect(('localhost', 8888)) # 设置发送到服务端数据 msg = '我是客户端' client.send(msg.encode(encoding='utf-8')) # 接收服务端数据 recv_data = client.recv(1024) print('收到服务端数据:', recv_data.decode(), '\n') client.close() if __name__ == '__main__': # 运行客户端 client_socket()

1.2创建服务端:

import socket def server_socket(): # 创建服务端 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定客户端ip和端口 server.bind(('localhost', 8888)) # 设置监听大小 server.listen(10) print('服务器开始监听') # 阻塞至客户端 取得消息 conn, ip_port = server.accept() # 设置消息大小 recv_data = conn.recv(1024) print(f'收到客户端{ip_port}', recv_data.decode(), '\n') # 发送到客户端消息 msg = '我是服务端' conn.send(msg.encode()) # 关闭资源 conn.close() if __name__ == '__main__': # 运行服务端 server_socket()

1.3运行测试: 首先运行服务端: image

再运行客户端,接收到已经运行的服务端数据: image

最后查看服务端数据: image

2.multiprocessing

Python可以用multiprocessing实现多进程

import multiprocessing import time def process_1(): for i in range(5): print(f'进程1运行:{i}次;') time.sleep(0.1) # 模拟进程运行时间 def process_2(name): for i in range(5): print(f'{name}进程2运行:{i}次;') time.sleep(0.1) # 模拟进程运行时间 def process_3(): for i in range(5): print(f'进程3运行:{i}次;') time.sleep(0.1) # 模拟进程运行时间 if __name__ == '__main__': # 开启守护进程 p1 = multiprocessing.Process(target=process_1, daemon=True) # 传参 p2 = multiprocessing.Process(target=process_2, args=('小明',)) # 不开启守护进程 p3 = multiprocessing.Process(target=process_3) p1.start() p2.start() p3.start() time.sleep(0.3) print('主进程结束!进程1一起结束。')

注意: 1.target=函数名,而不是target=函数名(); 2.在子进程创建进程可能会导致无限创建进程,要在main进程中创建进程。 测试结果: image

3.threading

Python可以用threading实现多线程

import threading import time def thread_1(): for i in range(5): print(f'线程1运行:{i}次;') time.sleep(0.1) # 模拟线程运行时间 def thread_2(name): for i in range(5): print(f'{name}线程2运行:{i}次;') time.sleep(0.1) # 模拟线程运行时间 def thread_3(): for i in range(5): print(f'线程3运行:{i}次;') time.sleep(0.1) # 模拟线程运行时间 if __name__ == '__main__': # 开启守护线程 p1 = threading.Thread(target=thread_1, daemon=True) # 传参 p2 = threading.Thread(target=thread_2, args=('小明',)) # 不开启守护线程 p3 = threading.Thread(target=thread_3) p1.start() p2.start() p3.start() time.sleep(0.3) print('主线程结束!线程1一起结束。')

测试结果: image

进程和线程的区别:

进程:

  1. 进程占用内存相对多
  2. 进程里默认有一个线程
  3. 进程间数据不共享
  4. 进程可以使用多个cpu运行

线程:

  1. 线程占用资源相对少
  2. 一个线程必须依赖一个进程运行
  3. 线程间的全局变量共享
  4. 线程只能用一个cpu来回切换运行
点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

一文带你了解Python Socket 编程

大家好,我是皮皮。前言Socket又称为套接字,它是所有网络通信的基础。网络通信其实就是进程间的通信,Socket主要是使用IP地址,协议,端口号来标识一个进程。端口号的范围为065535(用户端口号一般大于1024),协议有很多种,一般我们经常用到的就是TCP,IP,UDP。下面我们来详细了解下Socket吧。一、导入Socket模块因为要操作套接字,

java学习 网络编程 tcp

有客户端和服务端,使用tcp传输day26 27//客户端发数据到服务端/\\Tcp传输,客户端建立的过程。\1,创建tcp客户端socket服务。使用的是Socket对象。\建议该对象一创建就明确目的地。要连接的主机。\2,如果连接建立成功,说明数据传输通道已建立。\该通道就是socket流

Python之socket编程进阶版

1.socket之简单的ssh功能2.socket之简单的ftp服务器3.socketserver的用法4.socketserver的多并发的实现1.socket实现ssh服务 1.1我们现在Windows环境下试一下ssh的功能!(https://oscimg.oschina.net/oscnet/c77879672f0

Scapy 从入门到放弃

0x00前言最近闲的没事,抽空了解下地表最强的嗅探和收发包的工具:scapy。scapy是一个python模块,使用简单,并且能灵活地构造各种数据包,是进行网络安全审计的好帮手。0x01安装因为2020年python官方便不再支持python2,所以使用python3安装。!(https://oscimg.oschina.net/os

Android Socket 通信

Androidsocket通信安卓编写Socket客户端,实现连接Socket服务端通信。创建Socket连接并获取服务端数据先创建几个全局变量吧privateBufferedWriterwriternull;Socketsocket;