python-多线程小演练

标题:多线程之threading模块演练

# encoding=utf-8


# 传统的方式
# 执行 3 次
# 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()

import time
import threading
# 采用多线程的方式:
# 执行 3 次
def coding():
    for x in range(3):
        print('正在写代码%s' %threading.current_thread())
        time.sleep(1)

def drawing():
    for x in range(3):
        print('正在画图%s' %threading.current_thread())
        time.sleep(1)

def main():
    # threading.Thread 创建一个子线程
    # target 线程被创建完成后执行哪个代码
    # 注:传递函数时,只需要传递函数的名字
    #  而coding(): 代表返回值
    t1 = threading.Thread(target=coding)
    t2 = threading.Thread(target=drawing)
    t1.start()
    t2.start()
    print(threading.enumerate())

if __name__ == '__main__':
    main()


2.Thread类:

# encoding=utf-8

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()


3.共享全局变量的问题

# encoding=utf-8
import threading

VALUE = 0
# 创建锁
gLock = threading.Lock()
def add_value():
    # 全局变量需用 global 声明
    global VALUE
    # 上锁
    gLock.acquire()
    # 执行次数
    for x in range(10000000):
        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()



你可能感兴趣的:(python-多线程小演练)