编程语言
首页 > 编程语言> > 为什么有人说 Python 的多线程是鸡肋?不是真正意义上的多线程?

为什么有人说 Python 的多线程是鸡肋?不是真正意义上的多线程?

作者:互联网

欢迎各位小哥哥小姐姐阅读本<python教程入门学习>的文章,对大家学习有帮助,请点赞加关注哦!!!

您的点赞和关注将是我持续更新的动力呢.v

有不懂的问题可以私聊我哦!

问题:

1.1创建多线程

Python提供两个模块进行多线程的操作,分别是thread和threading,

前者是比较低级的模块,用于更底层的操作,一般应用级别的开发不常用。

图片.png

图片.png

1.2 线程合并

Join函数执行顺序是逐个执行每个线程,执行完毕后继续往下执行。主线程结束后,子线程还在运行,join函数使得主线程等到子线程结束时才退出。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微♥信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

为什么有人说 Python 的多线程是鸡肋?不是真正意义上的多线程?

1.3 线程同步与互斥锁

线程之间数据共享的。当多个线程对某一个共享数据进行操作时,就需要考虑到线程安全问题。threading模块中定义了Lock 类,提供了互斥锁的功能来保证多线程情况下数据的正确性。

用法的基本步骤:

为什么有人说 Python 的多线程是鸡肋?不是真正意义上的多线程?

其中,锁定方法acquire可以有一个超时时间的可选参数timeout。如果设定了timeout,则在超时后通过返回值可以判断是否得到了锁,从而可以进行一些其他的处理。

具体用法见示例代码:

图片.png

1.4 可重入锁(递归锁)

为了满足在同一线程中多次请求同一资源的需求,Python 提供了可重入锁(RLock)。

RLock内部维护着一个Lock和一个counter变量,counter 记录了 acquire 的次数,从而使得资源可以被多次 require。直到一个线程所有的 acquire 都被 release,其他的线程才能获得资源。

具体用法如下:

图片.png

1.5 守护线程

如果希望主线程执行完毕之后,不管子线程是否执行完毕都随着主线程一起结束。我们可以使用setDaemon(bool)函数,它跟join函数是相反的。它的作用是设置子线程是否随主线程一起结束,必须在start() 之前调用,默认为False。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微♥信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

1.6 定时器

如果需要规定函数在多少秒后执行某个操作,需要用到Timer类。具体用法如下:

为什么有人说 Python 的多线程是鸡肋?不是真正意义上的多线程?

2 Python 多进程

2.1 创建多进程

Python 要进行多进程操作,需要用到muiltprocessing库,其中的Process类跟threading模块的Thread类很相似。所以直接看代码熟悉多进程。

为什么有人说 Python 的多线程是鸡肋?不是真正意义上的多线程?

为什么有人说 Python 的多线程是鸡肋?不是真正意义上的多线程?

2.2 多进程通信

进程之间不共享数据的。如果进程之间需要进行通信,则要用到Queue模块或者Pipi模块来实现。

2.3 进程池

创建多个进程,我们不用傻傻地一个个去创建。我们可以使用Pool模块来搞定。

Pool 常用的方法如下:

为什么有人说 Python 的多线程是鸡肋?不是真正意义上的多线程?

具体用法见示例代码:

为什么有人说 Python 的多线程是鸡肋?不是真正意义上的多线程?

选择多线程还是多进程?

在这个问题上,首先要看下你的程序是属于哪种类型的。一般分为两种 CPU 密集型 和 I/O 密集型。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微♥信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

如果程序是属于 CPU 密集型,建议使用多进程。而多线程就更适合应用于 I/O 密集型程序。

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

标签:怕吃苦,Python,鸡肋,python,线程,进程,多线程
来源: https://blog.csdn.net/zihong523/article/details/121270456