python中的线程

一、线程

线程是操作系统中能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
#好处:
(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销很少

1.多线程之间共享数据时存在资源竞争问题,解决办法:互斥锁(越少越好)

2、互斥锁/线程锁

(1)、创建互斥锁对象:mutex = theading.Lock

(2)、上锁:mutex.acquire()

(3)、解锁:mutex.release()

3、创建线程:

(1)、导入theading包---->import theading

(2)、创建线程对象---->t1 = theading.Thead(target=子线程名/函数名,args=(1,),kwargs={“age”:12})

(3)、创建线程---->t1.start()

4、代码:

import threading
import time

#声明全局变量
gl_num = 0

#创建锁
suo = threading.Lock()

def dome1(num):

    #声明gl_num是全局变量让后进行循环赋值
    global gl_num

    for i in range(num):
        #上锁
        suo.acquire()
        gl_num += 1
        #释放锁
        suo.release()
    print("dome1中gl_num:%d"%gl_num)



def dome2(num):

    global gl_num

    for i in range(num):
        #上锁
        suo.acquire()
        gl_num += 1
        #释放锁
        suo.release()
    print("dome2中gl_num:%d"%gl_num)


def main():

    #查看此时创建的线程
    # print(threading.enumerate())

    d1 = threading.Thread(target=dome1,args=(1000000,))         #
    d2 = threading.Thread(target=dome2,args=(1000000,))

    # print(threading.enumerate())
    #子线程开始创建
    d1.start()
    d2.start()

    # print(threading.enumerate())

    time.sleep(2)
    print("main中gl_num:%d"%gl_num)

if __name__ == '__main__':

    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值