当前位置:首页 > TAG信息列表 > python终止线程怎么解决为什么我的python多线程不能交替运行?

python终止线程怎么解决为什么我的python多线程不能交替运行?

python终止线程怎么解决 为什么我的python多线程不能交替运行?

为什么我的python多线程不能交替运行?

不可以,python目前不适合多线程在多核上运行。只能使用单核。如果需要多核,可以考虑多进程模式。

pythonselenium多线程怎么用?

不同的线程创建不同的驱动程序,或者它们可以创建相同的驱动程序。

python终止线程怎么解决 为什么我的python多线程不能交替运行?

python的优点不包括什么?

python的优势不包括以下内容:

多线程和速度

python的整体性能较慢,有限的线程和多处理能力是其未来发展的主要障碍。

python长期以来重视编程的容易程度,而不是运行时的速度。当你通过用c或c写的高速外部库(比如numpy和numba)在python中完成这么多性能密集型的任务时,你会发现python注重编程的易用性,这也是一个不错的选择。然而,python的开箱即用性能还是落后于其他语言,比如nim和julia,它们的语法一样简单,但是可以编译成机器码,具有更高的性能优势。

python可以不能充分利用多核处理器,这是一个由来已久的问题。它确实有线程功能,但是它的线程功能仅限于单核。尽管python可以使用多个流程,但是调度和同步这些子流程的结果并不总是有效的。

打包和可执行文件

即使在python的诞生,python仍然没有很好的方法生成可执行文件(

python多进程和多线程是鸡肋嘛?

什么是线程?你为什么想要它?本质上,python是一种线性语言,但是当你需要更多的处理能力时,线程模块就会派上用场。python中的线程虽然不能用于并行cpu计算,但是非常适合web抓取等i/o操作,因为处理器是空闲的,在等待数据。

线程改变了游戏规则,因为许多与网络/数据i/o相关的脚本花费大部分时间等待来自远程源的数据。因为下载可能没有链接(即抓取一个单独的网站),所以处理器可以从不同的数据源并行下载,最后合并结果。对于cpu密集型进程,使用线程模块没有什么好处。

幸运的是,标准库中包含了线程:

可以使用targ:,这基本上是一种确保嵌入其中的代码只有在脚本直接运行(而不是导入)的情况下才能运行的方法。

锁你通常希望你的线程能够使用或修改线程间的公共变量,但是要做到这一点,你必须使用一个叫做锁的东西。每当一个函数试图修改一个变量时,它就锁定它。当另一个函数想要使用一个变量时,它必须等到该变量被解锁。

想象两个函数迭代变量1。使用锁可以确保一个函数可以访问变量、执行计算并写回变量,然后另一个函数才能访问同一个变量。

使用线程模块时,打印时也会发生这种情况,因为文本可能会变得混乱(并导致数据损坏)。您可以使用打印锁来确保一次只能打印一个线程。

在这里,我们有10项工作要做,5名工人将完成这项工作。

多线程并不总是完美的解决方案。我发现许多指导者倾向于忽略使用他们刚刚试图教你的工具的负面影响。理解使用所有这些工具有利也有弊是很重要的。例如:

与管理线程相关的开销很高,所以您不需要。;t不想用它做基本任务(比如例子);

它增加了程序的复杂性,这将使调试更加困难。

什么是多重处理?和螺纹有什么区别?如果没有多重处理,python程序将不能最大化系统的规格,因为gil(全局解释器锁定)。在设计python时,没有考虑到个人计算机可能有多个内核(向您展示了该语言的时代),所以gil是必要的,因为python不是线程安全的,并且在访问python对象时有一个全局强制锁。虽然它并不完美,但它是一种非常有效的内存管理机制。我们能做什么?

多重处理允许你创建可以同时运行的程序(绕过gil)并使用整个cpu内核。虽然和线程库有本质的区别,但是语法非常相似。多处理库为每个进程提供了自己的python解释器和gil。

因此,与线程相关的常见问题(如数据损坏和死锁)不再是问题。因为进程不共享内存,所以它们不能同时修改同一个内存。

让开始:如果您有一个共享数据库,请确保在开始一个新进程之前等待相关进程完成。

如果您想向进程传递参数,可以使用args。

这是一个简明的例子,因为您会注意到数字并没有按照您期望的顺序排列。

像线程一样,多重处理也有它的缺点...您必须选择它:

数据在进程间的随机移动会导致i/o开销。整个内存被复制到每个子进程,这可能会给更重要的程序造成大量开销。你应该用什么?如果你的代码有很多i/o或网络使用:

多线程是您的最佳选择,因为如果您有gui,它的开销非常低。

多线程,所以你的ui线程不会被锁定。如果您的代码受到cpu的限制:

你应该使用多重处理(如果你的电脑有多个核心)。

线程python进程多线程数据


凯喆号 宏昇号

  • 关注微信关注微信

猜你喜欢

热门标签

word怎么转到微信 电脑怎么设置指定用户可以远程 拼多多怎么登录 三星note2恢复出厂设置 led电子显示屏怎么使用 怎样在电视上安装优酷视频播放器 手机桌面怎么设置图片 微信怎样设置自动通过好友验证 联想笔记本检测不到wifi play商店苹果下载安装 vivos15闹钟铃声怎么设置不震动vivos15闹钟铃声设置方法介绍 华为手机浏览器静音怎么设置华为自带浏览器怎么关闭消音? 电脑qq怎么把可能认识的人关掉腾讯qq中“可能认识的人”提示功能如何取消? 文档目录怎么取消对齐到文档网格word网格线怎么调整横竖线? 直通车怎么开车省钱淘宝除了用直通车推广还有什么方式推广?介绍 怎么在微信小程序上开店 三星note3当年发售价 网盘哪个好用容量大什么移动网盘最好用? 画犀牛的教程犀牛建模——水瓶?介绍 u盘格式化怎么永久不能恢复u盘格式化不了是什么问题? 怎么在打印的每一页都加一个表头每一页都有表头怎么设置? 微信群怎么置顶公告微信群如何设置特别关心? 三星s9红包助手在哪里设置红包可以设置语音吗?介绍 qq浏览器不感兴趣怎么恢复ipad桌面浏览器怎么恢复原状?介绍 滴滴出行怎么查询历史打车记录 excel在生活中的用处电脑excel和PDF区别?介绍 如何将java代码打包成jarjava工具包怎么制作?介绍 magmanita是什么意思Mag是什么意思? 智能监控家用安装方法引弘泰无线摄像头怎么连接手机?介绍 word如何修改超链接格式word如何设置目录页码链接不对?

微信公众号