![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python网络编程
hh3167253066
勇敢牛牛,不怕困难
展开
-
16协程-使用yield,greenlet,gevent完成多任务
假的多任务,一个一个执行,并不是同时执行:并发import timedef task_1(): while True: print("-----1-----") time.sleep(0.1) yielddef task_2(): while True: print("-----2-----") time.sleep(0.1) yielddef main(): t1 =原创 2021-03-30 19:00:03 · 774 阅读 · 0 评论 -
15进程池的原理以及使用
用于需要创建的进程比较多的时候开启过多的进程并不能提高你的效率,反而会降低你的效率,假设有500个任务,同时开启500个进程,这500个进程除了不能一起执行之外(cpu没有那么多核),操作系统调度这500个进程,让他们平均在4个或8个cpu上执行,这会占用很大的空间。进程池里的每个进程可以执行完任务后会开始执行剩余的任务。from multiprocessing import Poolimport timeimport osimport randomdef worker(i): t_原创 2021-03-30 18:55:09 · 830 阅读 · 0 评论 -
14队列-多进程间的通信
队列:先进先出下面代码就模拟了下载数据与数据处理两个进程间利用队列进行数据传递的方法import multiprocessingdef download_from_web(q): ''' 下载数据 ''' # 模拟从网上下载的数据 data = [11, 22, 33, 44] # 向队列中写入数据 for temp in data: q.put(temp) print("下载器已经下载完数据并且存入了数据中")def anal原创 2021-03-30 18:47:49 · 790 阅读 · 0 评论 -
13process完成多进程
进程:一个电脑运行多个QQ线程:一个QQ中多个聊天界面import timeimport multiprocessingdef test1(): while True: print("1----") time.sleep(1)def test2(): while True: print("2----") time.sleep(1)def main(): p1 = multiprocessing.P原创 2021-03-30 18:39:17 · 777 阅读 · 0 评论 -
12互斥锁来解决多线程共享全局变量的问题
1. 多线程全局变量存在的问题(一块执行会造成数据同步存在问题)import threadingimport timeg_num = 0def test1(num): global g_num for i in range(num): g_num += 1 print("---in test1 g_num = %d---" % g_num)def test2(num): global g_num for i in range(num)原创 2021-03-30 18:35:56 · 1073 阅读 · 0 评论 -
11多线程共享全局变量以及target,args参数
import threadingimport timedef test1(temp): temp.append(33) print("---in test1 temp = %s---" % str(temp))def test2(temp): print("---in test2 temp = %s---" % str(temp))g_nums = [11, 22]def main(): # target 指定将来这个线程去那个函数执行代码原创 2021-03-30 18:24:05 · 1082 阅读 · 0 评论 -
10继承Thread类完成多线程的创建
也可实现具体的登录,注册功能的多线程import threadingimport timeclass MyThread(threading.Thread): def run(self): for i in range(3): time.sleep(1) msg = "I'm " + self.name + '@' + str(i) # name属性中保存当前线程的名字 print(msg) #原创 2021-03-29 15:11:02 · 790 阅读 · 0 评论 -
09thread多任务-线程-查看线程数量
import threadingimport timedef text1(): for i in range(5): print("----text1---%d--" % i) time.sleep(1)def text2(): for i in range(5): print("----text2---%d--" % i) time.sleep(1)def main(): t1 = threadin原创 2021-03-29 15:06:37 · 1026 阅读 · 0 评论 -
08thread实现多任务-线程
import timeimport threadingdef sing(): # 唱歌五秒钟 for i in range(5): print("正在唱青花瓷") time.sleep(1)def dance(): # 跳舞五秒钟 for i in range(5): print("正在跳舞") time.sleep(1)def main(): t1 = threading.Threa原创 2021-03-29 15:04:56 · 745 阅读 · 0 评论 -
07文件下载案例-客户端-服务端
客户端import socketdef main(): # 创建socket tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 目的信息 server_ip = input("请输入服务器ip:") server_port = int(input("请输入服务器port:")) # 连接服务器 tcp_client_socket.connect((原创 2021-03-29 15:02:56 · 792 阅读 · 0 评论 -
06tcp服务端
为了更好的理解这个过程会输出一些-----1-----数字1.运行代码(服务端先启动)import socketdef main(): # 1. 买个手机(创建套接字 socket) tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 插入手机卡(绑定本地信息 bind) tcp_server_socket.bind(("", 7890)) # 3. 将手机设原创 2021-03-29 14:46:28 · 761 阅读 · 0 评论 -
05tcp客户端
1.tcp服务器端先准备好,打开2.运行代码(打开tcp客户端)import socketdef main(): # 1. 创建tcp套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 链接服务器 # tcp_socket.connect(("192.168.124.2",8080)) server_ip = input("请输入要连接的服务器ip:")原创 2021-03-29 14:38:32 · 767 阅读 · 0 评论 -
04udp实现聊天器
配合网络调试助手使用代码如下import socketdef send_msg(udp_socket): dest_ip = input('请输入对方的ip:') dest_port = int(input('请输入对方的端口:')) send_data = input('输入要发送的消息:') udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))def recv_msg(udp_原创 2021-03-29 14:32:16 · 796 阅读 · 0 评论 -
03socket为全双工
全双工简单来说就是可以通过udp同时实现收发信息1.先在pycharm中运行如下代码import socketdef main(): udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) dest_ip = input("请输入对方ip:") dest_port = int(input("请输入对方端口:")) send_data = input("请输入内容:") udp_socket.原创 2021-03-29 14:29:40 · 967 阅读 · 0 评论 -
02udp接收数据
1.先把下面代码在pycharm中运行(原理看注释)import socketdef main(): # 创建套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定一个本地信息 localaddr = ("", 7899) udp_socket.bind(localaddr) # 必须绑定自己电脑上的ip,端口 # 接收数据 while True:原创 2021-03-29 14:19:28 · 863 阅读 · 0 评论 -
01udp发送数据
提前下载个网络调试助手链接:https://pan.baidu.com/s/1Tvpq0lzXEdaXa2stYUO3xQ提取码:nboe在打开网络调试助手:按下图进行操作在pycharm中运行下面代码:import socketdef main(): # 创建一个udp套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udp_socket.bind(("", 8080)) # 这是绑原创 2021-03-29 14:05:53 · 950 阅读 · 0 评论