首页

文章

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

为什么要使用多线程

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

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

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

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

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

IDM IDMShellExt64.dll无法删除 - 删除使用中的(进程相关或残留)文件... 写关于活动的句子100字 社区团购运营思路和实战有啥收获写100字 备忘录在手机的哪里 刚性消费有哪些 中国经济快速增长的原因 什么是刚性消费 什么叫刚性增长 特别精辟的个性签名(非常经典的个性句子) 特别经典的个性签名(非常惊艳的个性句子) 文艺范十足的个性签名(温柔治愈的个性签名句子) wps文字怎么设置每页头和尾 27岁的女人需要补充哪些营养元素 27岁该重视美容了吗?都可以用哪些方法好些呢? airpods连不上手机怎么回事 - 知百科 腰肌劳损能养好吗? 有一段相声讲的是原始人打猎,唱歌,学说话的,请问名字是什么? 个人征信逾期记录的修复攻略,手把手传授 抖音火山版在哪注销账号 注销账号方法介绍 支付宝怎么把余额宝冻结的钱转出来? 余额宝冻结金额怎么解冻? 支付宝余额锁定怎么解除?可以简单介绍一下吗? 母乳跟气血有关系吗 穿jk发朋友圈俏皮的文案 穿jk制服发朋友圈的文案 福鼎绿雪芽茶历史传说 福鼎太姥绿雪芽曾与武夷山名茶齐名 石蛙保护级别是多少? 是田螺吗?还是别的什么? 昆虫头上像丝一样的感觉器官是表示什么词语 感什么器什么的词语感x器x式的四字词语 三控开关怎么接线方法图片 独立IP和共享IP的区别以及各自的优势有哪些 什么是共享和独享IP、动态和静态IP、固定IP? 连接电脑的wifi如何查名称怎么查看电脑wifi 千变表情是什么意思? kmose正确使用方法? 单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 腾讯会议共享屏幕没声音怎么办 微信寄快递怎么取消订单_取消订单方法介绍 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的界面全部关掉
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com