首页 > 其他 > 详细

Thread基础

时间:2020-06-19 00:31:15      阅读:95      评论:0      收藏:0      [点我收藏+]

继承线程类:

import threading
import time

class CodingThread(threading.Thread):
    def run(self):     # 继承线程,重写run方法
        for x in range(3):
            print(aaaaaa %s%threading.current_thread()) 
            # threading.current_thread() 查看当前线程信息
            time.sleep(1)

class DrawingThread(threading.Thread):
    def run(self):
        for x in range(3):
            print(bbbbbbbb %s%threading.current_thread())

def main():
    t1 = CodingThread()
    t2 = DrawingThread()

    t1.start()
    t2.start()

if __name__==__main__:
    main()        

两个线程的VALUE同时进行+1的操作,当数量多大时,结果会出现误差,加锁可以防止误差。
# 多线程都是在同一个进程中运行的。因此在进程中的全局变量所有线程都是可共享的。线程执行的顺序是无序的,可能造成数据错误。

import threading

VALUE = 0

gLock = threading.Lock()

def add_value():
    global VALUE
    gLock.acquire() # 加锁 (只需要对被修改的全局变量加锁,访问全局变量不需要加锁)
    for x in range(1000000):
        VALUE += 1
    gLock.release() # 释放
    print(VALUE)

def main():
    for x in range(2):
        t = threading.Thread(target=add_value)
        t.start()

if __name__==__main__:
    main()

 

Thread基础

原文:https://www.cnblogs.com/suancaipaofan/p/13160653.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!