问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python多线程是什么意思?

发布网友 发布时间:2022-03-24 02:32

我来回答

4个回答

热心网友 时间:2022-03-24 04:02

简单地说就是作为可能是仅有的支持多线程的解释型语言(perl的多线程是残疾,PHP没有多线程),Python的多线程是有compromise的,在任意时间只有一个Python解释器在解释Python bytecode。
UPDATE:如评论指出,Ruby也是有thread支持的,而且至少Ruby MRI是有GIL的。
如果你的代码是CPU密集型,多个线程的代码很有可能是线性执行的。所以这种情况下多线程是鸡肋,效率可能还不如单线程因为有context switch
但是:如果你的代码是IO密集型,多线程可以明显提高效率。例如制作爬虫(我就不明白为什么Python总和爬虫联系在一起…不过也只想起来这个例子…),绝大多数时间爬虫是在等待socket返回数据。这个时候C代码里是有release GIL的,最终结果是某个线程等待IO的时候其他线程可以继续执行。
反过来讲:你就不应该用Python写CPU密集型的代码…效率摆在那里…
如果确实需要在CPU密集型的代码里用concurrent,就去用multiprocessing库。这个库是基于multi process实现了类multi thread的API接口,并且用pickle部分地实现了变量共享。
再加一条,如果你不知道你的代码到底算CPU密集型还是IO密集型,教你个方法:
multiprocessing这个mole有一个mmy的sub mole,它是基于multithread实现了multiprocessing的API。
假设你使用的是multiprocessing的Pool,是使用多进程实现了concurrency
from multiprocessing import Pool
如果把这个代码改成下面这样,就变成多线程实现concurrency
from multiprocessing.mmy import Pool
两种方式都跑一下,哪个速度快用哪个就行了。
UPDATE:
刚刚才发现concurrent.futures这个东西,包含ThreadPoolExecutor和ProcessPoolExecutor,可能比multiprocessing更简单

热心网友 时间:2022-03-24 05:20

多线程能让你像运行一个独立的程序一样运行一段长代码。这有点像调用子进程(subprocess),不过区别是你调用的是一个函数或者一个类,而不是独立的程序。
程基本上是一个独立执行流程。单个进程可以由多个线程组成。程序中的每个线程都执行特定的任务。例如,当你在电脑上玩游戏时,比如说国际足联,整个游戏是一个单一的过程。,但它由几个线程组成,负责播放音乐、接收用户的输入、同步运行对手等。所有这些都是单独的线程,负责在同一个程序中执行这些不同的任务。
每个进程都有一个始终在运行的线程。这是主线。这个主线程实际上创建子线程对象。子线程也由主线程启动。

热心网友 时间:2022-03-24 06:54

几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,所有运行中的任务都对应一个进程。即当一个程序进入内存运行时,即变成一个进程。进程就是处于运行过程中的程序,并且具有一定的独立功能。进程是系统进行资源分配调度的一个独立单位,当一个程序运行时,内部可能包含多个顺序执流,每个顺序执行流就是一个线程。Python多线程的优势:
1、线程在程序中是独立的,并发的执行流,划分尺度小于进程,所有多线程程序的并发性高;
2、进程在执行过程中拥有独立的内存单元,而多个线程共享内存,可以极大地提高进程程序的运行效率;
3、线程比进程具有更高的性能,由于同一个进程中的线程都有共性,多个线程共享同一个进程的虚拟空间,可以很容易实现通信。操作系统在创建进程中,必须为该进程分配独立内存空间,分配大量相关资源,但创建线程则简单得多。

热心网友 时间:2022-03-24 08:46

什么是线程

线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。

为什么要使用多线程

线程在程序中是独立的、并发的执行流。与分隔的进程相比,进程中线程之间的隔离程度要小,它们共享内存、文件句柄和其他进程应有的状态。

因为线程的划分尺度小于进程,使得多线程程序的并发性高。进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

线程比进程具有更高的性能,这是由于同一个进程中的线程都有共性多个线程共享同一个进程的虚拟空间。线程共享的环境包括进程代码段、进程的公有数据等,利用这些共享的数据,线程之间很容易实现通信。

操作系统在创建进程时,必须为该进程分配独立的内存空间,并分配大量的相关资源,但创建线程则简单得多。因此,使用多线程来实现并发比使用多进程的性能要高得多。

总结起来,使用多线程编程具有如下几个优点:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
车搭电正负极怎么接 勾车线怎么接 我想自己创业,但是我只会做理发这行,我想要改行,想多赚点钱。 作为一名新幼儿教师如何正确树立自己的职业理想 2024年江苏物理类619分能考上什么大学? 2023北京985/211率出炉!北京学生上名校到底难不难? 多少分能考上宁波诺丁汉大学 2024年浙江618分能考上什么大学? 2024年浙江627分能考上什么大学? 2024年浙江619分能考上什么大学? python 多线程与多进程问题? Python中的多进程与多线程/分布式该如何使用 Python中进程与线程的区别是什么 python 多进程和多线程配合 python 多线程和多进程的区别 mutiprocessing theading python多线程和多进程的区别有哪些 python中多进程和多线程的区别 手机无法保存屏幕截图怎么回事 vivo手机没法截图了怎么回事? 手机截图截不了了怎么回事 oppo手机 手机截屏不了怎么回事? 手机无法截屏 华为运动表Model如何开机? 华为watch2怎么开机? 华为watch开不开机 华为运动手表怎么使用 新买的华为手表怎么使用 华为手表格式化后怎么启动 华为watch2怎么开机 华为手表新款watch+gt2pro不小心动了恢复出厂设置怎么开机_问一问 如何理解python的多线程编程 为什么在Python里推荐使用多进程而不是多线程 python异步协程跟多进程多线程哪个效率高? Python多线程,多进程不能同时执行? python如何开多进程,在每条进程里再开多线程 如何多线程(多进程)加速while循环(语言-python)? 浅谈Python和Java的多进程与多线程的异同 python中多进程+协程的使用以及为什么要用它 python 访问 Mysql 数据库,是多线程好还是多进程好 学信网注册的手机号不用了怎么办 学信网用户名用手机号注册的,但是手机号换了,也不知道以前的手机号吗,怎么办? 学信网上的手机号码已经不用了,怎么登陆? 麻烦问一下,那个学信网的那个,密码忘了,还有以前那个手机号不用了,该怎么办? 学信网密码找回手机号换了怎么办 学信网捆绑了手机号码,可是更换了号码,应该如何进行修改? 学信网手机号忘了怎么办 学信网 密码忘去 当初注册的手机号现在不用了 邮箱也没有绑定 密码也没设置 怎么办 急急急学信网用_问一问 学信网密码忘了,手机号也不用了,怎么找回密码? 魔兽世界这个功能怎么关 怎么把WOW的界面全部关掉