模块:threading(多线程)

import threading
import time

def DiYi():
    for i in range(4):
        print('第一',i)
        time.sleep(1)

def DiEr():
    for i in range(4):
        print('第二',i)
        time.sleep(1)

def ddd():
    t1 = threading.Thread(target=DiYi)      # 创建多线程对象
    t2 = threading.Thread(target=DiEr)
    t1.start()      # 调用对象
    t2.start()
    JinChengShuLiang = len(threading.enumerate())       # 获取当前程序的所有线程个数(包括主线程)
    print('当前线程数是:',JinChengShuLiang)
#--------------------------------以上是多线程教基础-------------------------------------------------
# 从线程内传入参数给函数
def hello(name,t):
    # 这是线程的主函数
    print('name参数是:',name)
    print('t参数是:',t)

def xiancheng():
    A = threading.Thread(target=hello,args=('A','100',))
    B = threading.Thread(target=hello,args=('B','200',))
    A.start()
    B.start()

class Abc(threading.Thread):
    def run(self):      # 一定要run
        print('')

# ---------------如果两个线程同时修改一个全局变量时,可能会发生错误,此时需要上锁---------------------------
# ···························适用于同步修改同一个变量···················································
# 同一个锁如果启用了,再次遇到启用锁就会堵在这不会往下执行,等之前启用锁的地方执行完关闭锁
suo = threading.Lock()      # 创建锁
shuzi = 0
def naem1(int1):
    global shuzi,suo
    # 也可以把锁放在循环外面,先加完一个在加另一个,或者两个同时加
#     suo.acquire()  # 启用锁
    for i in range(int1):
        suo.acquire()  # 启用锁
        shuzi += 1
        suo.release()  # 关闭
#     suo.release()  # 关闭锁
    print('name1执行完成,name1是:',shuzi)

def name2(int1):
    global shuzi,suo
#    suo.acquire()  # 启用锁
    for i in range(int1):
        suo.acquire()  # 启用锁
        shuzi += 1
        suo.release()       # 关闭锁
#    suo.release()  # 关闭锁
    print('name2执行完成,name2是:',shuzi)

def name_ZhuHanShu():
    global shuzi
    t1 = threading.Thread(target=naem1,args=(1000000,))
    t2 = threading.Thread(target=name2,args=(1000000,))

    time.sleep(10)
    print('shuzi的最终结果是:',shuzi)
    t1.start()
    t2.start()


if __name__ == '__main__':
    name_ZhuHanShu()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值