
python网络编程
龙王.*?
向来心是看客心,奈何人是剧中人。
展开
-
网络传输模型(概念)
网络传输的参考模型有两种,一种是OSI(Open System InetConnection)参考模型,其有七层,另一种是TCP/IP参考模型,被减压成四层。OSI模型在当下以基本被TCP/IP模型所取代,因其造价太昂贵,没多少公司用得起。如下图所示:数据在传输的过程中是以包的形式一包一包传的,故数据包是一个信息单位,作为一个整体,从网络中的一个设备传送给另一个设备。数据包创建于应用层,然...翻译 2018-10-17 23:23:58 · 2563 阅读 · 1 评论 -
套接字详解(socket)
用户认为的信息之间传输只是建立以两个应用程序上,实际上在TCP连接中是靠套接字来作为他们连接的桥梁。那么什么是套接字呢?TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。套接字用(IP地址:端口号)表示,区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。...原创 2018-10-18 17:09:43 · 26449 阅读 · 4 评论 -
非阻塞套接字实现并发
上篇博客介绍的套接字因为其阻塞性导致线程可能会被一直占用,从而造成一个服务端只能连接一个客户端的现象。在python中,可以将套接字设置为非阻塞型,即在套接字实例化后将setblocking方法的参数改为False。下面看一下非阻塞套接字和阻塞套接字的区别。accept会从原先的阻塞变成疏通,但如果没有连接过来它会报BlockingIOError异常。recv会从原先的阻塞变成疏通,但如...翻译 2018-10-18 22:30:05 · 692 阅读 · 1 评论 -
epoll——IO多路复用选择器
上上篇博客讲的套接字,由于其阻塞性而导致一个服务端同一时间只能与一个客户端连接。基于这个缺点,在上篇博客我们将其设置为非阻塞实现了一个服务端同一时间可以与多个客户端相连,即实现了并发,但其同样留下了一个缺点:CPU的利用率低。这一篇博客是基于这个缺点再进一步进行改善,即实现并发,又提高CPU的利用率。什么是epoll?epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是...翻译 2018-10-20 00:30:14 · 380 阅读 · 0 评论 -
进程与线程
什么是进程和线程?进程是加载到内存,正在被执行的程序。每个进程都拥有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据。进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。线程是比进程还小的运行基本单元,一个进程至少有一个线程。线程是一种轻量级的进程,多线程处理就是允许一个进程中在同一时刻执行多个任务。进程和线程的区别?进程是操作系统资源分配的基本...原创 2018-10-21 00:41:18 · 240 阅读 · 0 评论 -
进程线程补充
显示当前进程或线程multiprocessing.current_process()#显示当前进程threading.current_thread()#显示当前线程join等待:子进程或子线程结束后再执行主进程或主线程pro_name.join()thr_name.join()中止进程:在主进程遇到这个会自动中止所开的进程,线程不能中途中止,必须等到自己结束或异常被迫中止。...原创 2018-10-24 19:46:52 · 211 阅读 · 0 评论 -
并发通信(进程与线程)
进程与线程在通信中都会遇到各自的问题,这是因他们各自的性质而产生的。每个进程有自己的地址空间,两个进程中的地址即使值相同,实际指向的位置也不同,故进程间无法直接就能通信。虽然同一进程的线程共享全局变量和内存,使得线程之间共享数据很容易也很方便,但会带来某些共享数据的互斥问题。下面用代码来值观地展示各自的问题。进程通信限制:import multiprocessingdef func()...翻译 2018-11-01 15:03:11 · 375 阅读 · 0 评论 -
进程池与线程池
在介绍进程池和线程池之前,我们需要对其原理有一个了解。总所周知,进程和线程都是不可被重复利用的,在实现高并发中,这会极大的浪费资源。所以首先我们应该想办法实现线程和进程的可重复利用,而生产者与消费者模式就可以很好地解决这个问题。当我们需要开启多个线程或进程时,难道只能一个个去开吗?这时我们可以开辟一个进程池或线程池,可以一次就开启多个进程或线程,池的简单实现也可以用生产者与消费者模式来实现。最后在...翻译 2018-11-01 19:14:11 · 413 阅读 · 0 评论 -
python协程
协程又叫做微线程,英文名叫Coroutine。与线程一样的是协程也相对独立,有自己的上下文,可相互切换,不同的是线程由解释器调用cpu来实现,而协程由程序自身控制。与线程一样,协程也可以实现生产者与消费者模式和实现并发。多协程与多线程相比,最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。协...翻译 2018-11-03 19:42:36 · 251 阅读 · 0 评论