python并发线程那些事
admin
2023-07-15 08:21:54
0
 在python中并发是指一次处理多件事,而并行是指一次做多件事。也可以理解为在做事情时,或者计算机的资源需要处理时,在此时刻计算机需要处理资源时而把人做事情映射成计算机工作时可以或者互不干扰处理资源,这也就反射出貌似同步和异步处理时,这就是并行,而并发时计算机的资源需要处理时,在此时刻内具体负责处理的工作或事情,强调的是具体,某个时段内要做的工作,一个可以看做广度,这个可以看做深度,而此时并发处理的资源多了起来,很多的在此时高并发也就衍生出来了。
     并发的解决方案有几下几种:
     1,队列,缓冲区,
                 队列先进先出,计算机排顺序的处理资源,
                 缓冲区,资源处理前有一个缓冲地带可以处理时

        2,争抢,
                    资源需要处理时被某个程序也好,还是什么的东西,反正就是此资源被锁定了资源,而其他就只能继续等待这个资源值了,直到此资源被释放了在重新使用或运行等等。而争抢的模式的弊端在于一旦占据资源时导致其他得不到这个资源,也可能存在资源的浪费等等。
        3,预处理,
            资源值来临前需要提前需要预加载,预先做好一部分工作,如手机的缓存的功能等
        4,提速,
                    加强提高处理资源的工具,处理器cpu不行了,4核不够上8核,内层不够,8g ,16,32g等
        5,消息中间件
                    这个不同于缓冲,中间件常见的有RabbitMQ、ActiveMQ(Apache)、RocketMQ(阿里Apache)、kafka(Apache),反正就是买服务啦,第三方云等等。

线程

python并发线程那些事

            上面图片中此电脑中线程进程可以看一下,是指进程程对计算机程序中资源的分配和调度和使用,线程可以看做轻量级进程,包含在进程之内,线程存在就绪,运行,阻塞,终止四种状态。python中线程使用threaing库,
        导入threading库即可。

            import  threading
def a():
    print("111111111111")
    print("2222222222222222")

t = threading.Thread(target=a, name='worker') # 线程对象
t.start() #线程启动

在此创建了一个线程对象,target是目标函数,名称等,调用时需要启动start,python并没有线程退出的方案,要么继续执行完毕,或者抛出异常,

import threading
import time

def worker():
    count = 0
    while True:
        if (count > 5):
            # raise RuntimeError(count) #抛出
            # return
            break
        time.sleep(1)
        print("I'm work------")
        count += 1

t = threading.Thread(target=worker, name='worker') 
t.start() 

print('==End==')

线程如何传参,

import threading
import time

def add(x, y):
    print('{} + {} = {}'.format(x, y, x + y, threading.current_thread().ident))

thread1 = threading.Thread(target=add, name='add', args=(4, 5)) 
thread1.start() 

time.sleep(2)

thread2 = threading.Thread(target=add, name='add', args=(5,), kwargs={'y': 4})
thread2.start() 
time.sleep(2)

thread3 = threading.Thread(target=add, name='add', kwargs={'x': 4, 'y': 5}) 
thread3.start() 

线程的属性和方法:
在此有了start和run的方法,start和run就是start启动线程时每一个线程需要执行该方法一次,启动了一个新线程,而run时运行该线程函数,并没有启动一个新线程,只是一个普通函数而已。

相关内容

热门资讯

特朗普:正致力于与伊朗达成协议... 特朗普在《纽约邮报》一档播客访谈节目中称,他正与伊朗磋商一项协议,伊朗已同意不再谋求拥有核武器。他表...
不接壤的日菲为何偷划海界? 日菲近日发表联合声明,宣称就“划定两国专属经济区和大陆架的海洋边界”启动正式谈判。两个隔海相望的国家...
凤凰晚报丨从钳工到老戏骨,魏宗... 今日人物【从钳工到老戏骨,魏宗万用一生诠释“戏比天大”】6月1日,表演艺术家魏宗万在上海逝世,享年8...
科威特称伊朗袭击致63人受伤 科威特卫生部门3日称,伊朗当天对科威特的袭击已造成63人受伤,相关部门已启动紧急应对预案,并在全国范...
日本标榜“和平国家”却行扩军备... 今年是东京审判开庭80周年,世界正回望历史、反思战争罪责、捍卫二战后来之不易的国际秩序之际,日本却迈...
浙江杨梅即将大规模上市,如何破... “我们现在的压力很大。”5月底,浙江余姚杨梅产区丈亭镇副镇长林宇站在一片杨梅林前对第一财经表示,当地...
致5死2伤!韩国就韩华航空航天... 【环球网报道 记者 姜蔼玲】据韩联社6月1日报道,针对位于韩国大田的韩华航空航天公司发生爆炸致7人伤...
黄河科技学院2026年招生简章 长按图片识别二维码或点击 “阅读原文” 查看电子招生简章。
医路起航,从“心” 开始!黄河... 6月1日上午,黄河科技学院附属医院2022级临床医学本科实习生入院岗前培训在大医讲堂顺利举办。院领导...
问题居然在实体卡槽上!美版iP... 6月2日消息,日前,又有博主提前把还没发布的iPhone 18 Pro电池参数给曝光了出来,根据爆料...