您的位置 首页 php

深入理解Python简单线程和协程

要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识。

Unix /Linux操作系统提供了一个

对这方面感兴趣,想要学习 python 或者想要了解python可以加群:623715703

fork()

系统调用,它非常特殊。普通的 函数调用 ,调用一次,返回一次,但是

fork()

调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。

子进程永远返回

0

,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用

getppid()

就可以拿到父进程的ID。

python中对 线程 的支持的确不够,不过据说python有足够完备的异步网络框架模块,希望日后能学习到,这里就简单的对python中的线程做个总结

threading库可用来在单独的线程中执行任意的python可调用对象。尽管此模块对线程相关操作的支持不够,但是我们还是能够用简单的线程来处理I/O操作,以减低程序响应时间。

对这方面感兴趣,想要学习python或者想要了解python可以加群:623715703

start函数是用来开启线程的,_stop函数是用来停止线程的。为了防止在线程中进行I/O操作时出现阻塞等问题,运行一段时间之后,可以判断线程是否还存活,如果线程还存在就调用_stop()停止,防止阻塞(你可以将_stop函数封装到类中,我这里并没有这么做)。

当然,你可以调用ThreadPool 线程池 来处理,而不是手动创建线程。如果线程间不需要共享变量的话,使用线程还是很方便的,可以减少很多的麻烦操作以及省时。如果需要在线程间进行通信,我们可以使用队列来实现:

对这方面感兴趣,想要学习python或者想要了解python可以加群:623715703

Queue实例会被所有的线程共享,同时它又拥有了所有所需要的锁,因此它们可以安全的在任意多的线程中共享。在这里要注意,不要再 多线程 中使用除了put(),get()方法之外的queue类的方法,因为在多线程环境中这是不可靠的!对于简单的小型的线程中数据的通信,可以使用队列来处理。如果是大型的数据需要交互通信,python提供了相关的模块你可以使用,具体的u
need baidu.

所谓协程,其实就是在单线程的环境下的 yield 程序。

对这方面感兴趣,想要学习python或者想要了解python可以加群:623715703

学习任何一门语言都是从入门(1年左右),通过不间断练习达到熟练水准(3到5年),少数人最终能精通语言,成为执牛耳者,他们是金字塔的最顶层。虽然万事开头难,但好的开始是成功的一半,今天这篇文章就来谈谈如何开始入门Python。只要方向对了,就不怕路远。

文章来源:智云一二三科技

文章标题:深入理解Python简单线程和协程

文章地址:https://www.zhihuclub.com/80396.shtml

关于作者: 智云科技

热门文章

发表评论

您的电子邮箱地址不会被公开。

网站地图