网管 发布的文章

线程池在使用多线程处理任务时也不是线程越多越好。因为在切换线程的时候,需要切换上下文环境,线程很多的时候,依然会造成CPU的大量开销。为解决这个问题,线程池的概念被提出来了。预先创建好一个数量较为优化的线程组,在需要的时候立刻能够使用,就形成了线程池。在Python中,没有内置的较好的线程池模块,需要自己实现或使用第三方模块。

- 阅读剩余部分 -

生产者消费者模式利用多线程和队列可以实现生产者消费者模式。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。什么是生产者和消费者?在线程世界里,生产者就是生产数据(或者说发布任务)的线程,消费者就是消费数据(或者说处理任务)的线程。在任务执行过程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者提供更多的任务,本质上,这是一种供需不平衡的表现。为了解决这个问题,我们创造了生产者和消费者模式。

- 阅读剩余部分 -

socketserver编程上文中,我们自己使用socket和threading模块实现了一个简单的多线程服务器。在非正式环境,随便用用还是可以的,但是如果要在生产环境中使用,那是万万不够的。Python考虑得很周到,为了满足我们对多线程网络服务器的需求,提供了socketserver模块。socketserver在内部使用IO多路复用以及多线程/进程机制,实现了并发处理多个客户端请求的socket服务端。每个客户端请求连接到服务器时,socketserver服务端都会创建一个“线程”或者“进程” 专门负责处理当前客户端的所有请求。

- 阅读剩余部分 -

网络编程当今的世界是一个互联的世界,绝大多数的计算机和人都在通过网络和他人传递信息、沟通互联。我们在网络上学习、游戏、工作,我们提供各种各样的网络服务,又有很多人使用着各种各样的网络服务。网络改变了世界,而程序员“定义”了网络。我们在代码中实现了网络的通信,让一切变得可能。

- 阅读剩余部分 -

re模块上文介绍的是正则表达式本身的语法知识,并未涉及实际使用的方法。本文将介绍在Python语言中如何使用正则表达式。在Python中,通过内置的re模块提供对正则表达式的支持。正则表达式会被编译成一系列的字节码,然后由通过C编写的正则表达式引擎进行执行。该引擎自从Python1.6被内置以来,近20年时间未有发生过变化,实乃我辈楷模。

- 阅读剩余部分 -

正则表达式语法这一部分是正则表达式的通用语法,和Python实现无关。正则表达式本质上只做一件事,那就是编写一个表达式“字符串”,然后用这个字符串去匹配目标文本。核心的核心,都在编写这个“字符串”表达式上面。注意:文中讨论的所有字符都是英文半角字符,和中文字符没有一毛钱关系!千万不要写成中文标点符号。

- 阅读剩余部分 -

正则表达式正则表达式(regular expression)是一种工具,一种广泛用于匹配字符串的工具。它用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+”描述的特征是“一个'a'和任意个'b'”,那么'ab','abb','abbbbbbbbbb'都符合这个特征。

- 阅读剩余部分 -