多线程

单线程的方式
import time

def coding():
    for x in range(3):
        print("正在写代码%s"%x)
        time.sleep(1)
        
def drawing():
    for x in range(3):
        print("正在画图%s"%x)
        time.sleep(1)
        
        
def main():
    coding()
    drawing()
    
if __name__ == "__main__":
    main()

结果:
    正在写代码0
    正在写代码1
    正在写代码2
    正在画图0
    正在画图1
    正在画图2

 

 

# 多线程,相当于平行执行
import time
import threading

def coding():
    for x in range(3):
        print("正在写代码%s"%x)
        time.sleep(1)
        
def drawing():
    for x in range(3):
        print("正在画图%s"%x)
        time.sleep(1)
        
def main():
    t1 = threading.Thread(target=coding)
    t2 = threading.Thread(target=drawing)
    
    t1.start()
    t2.start()
    
if __name__ == "__main__":
    main()

结果:
正在写代码0
正在画图0
正在写代码1
正在画图1
正在写代码2
正在画图2

另外的写法多线程

 

import threading
import time
class CodingThread(threading.Thread):
    def run(self):
        for x in range(3):
            print("正在写代码%s"%threading.current_thread())
            time.sleep(1)

class DrawingThread(threading.Thread):
    def run(self):
        for x in range(3):
            print("正在画图%s"%threading.current_thread())
            time.sleep(1)            

def main():
    t1 = CodingThread()
    t2 = DrawingThread()
    t1.start()
    t2.start()
    
if __name__ == "__main__":
    main()


结果:
正在写代码<CodingThread(Thread-21, started 7320)>正在画图<DrawingThread(Thread-22, started 7456)>

正在写代码<CodingThread(Thread-21, started 7320)>
正在画图<DrawingThread(Thread-22, started 7456)>
正在写代码<CodingThread(Thread-21, started 7320)>
正在画图<DrawingThread(Thread-22, started 7456)>

 

 

# 锁只用于修改了全局变量的地方,访问的地方不用加锁
import threading

VALUE = 0

gLock = threading.Lock()

def add_value():
    global VALUE
######################
    gLock.acquire()
    for x in range(100000):
        VALUE += 1
    gLock.release()
#####################
    print("value:%d"%VALUE)
    
def main():
    for x in range(2):
        t = threading.Thread(target=add_value)
        t.start()
        
if __name__ == "__main__":
    main()

结果:
value:100000
value:200000

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值