• python 多线程


    Python线程模块 threading

    获取当前线程 threading.current_thread()

    创建线程 threading.Thread(group=none, target=none, name=none, args=(), kwargs={})

    group:线程组,还没有实现,引用时必须是none

    target:要执行的方法名,注意方法名后面不要跟着括号

    name:创建的线程的名字

    args/kwargs:要传入方法的参数

    开始线程 实例.start()

    # _*_ coding:utf-8_*_
    import time
    import threading


    def loop():
    print('thread %s is running...' % threading.current_thread().name)
    n = 0
    while n < 5:
    print('Thread %s >>> %s' % (threading.current_thread().name, n))
    n +=1
    time.sleep(1)
    print('Thread %s ended' % threading.current_thread().name)

    print('thread %s is running' % threading.current_thread().name)
    t = threading.Thread(target=loop, name='loopthread') # 创建线程,target是要执行的方法 name是线程的名称
    t.start() # 开始线程
    t.join()
    print('thread %s ended' % threading.current_thread().name)

    在使用全局变量时,必须给线程加锁 lock,threading.Lock(),不然多线程对全局变量的修改会导致结果出错
    使用线程自己的局部变量时可以不用加锁
    # _*_ coding:utf-8_*_
    import time
    import threading


    def loop():
    print('thread %s is running...' % threading.current_thread().name)
    n = 0
    while n < 5:
    print('Thread %s >>> %s' % (threading.current_thread().name, n))
    n +=1
    time.sleep(1)
    print('Thread %s ended' % threading.current_thread().name)

    print('thread %s is running' % threading.current_thread().name)
    t = threading.Thread(target=loop, name='loopthread') # 创建线程,传入线程执行的函数和参数
    t.start() # 开始线程
    t.join()
    print('thread %s ended' % threading.current_thread().name)

    ThreadLocal全局变量,解决线程之间参数的传递问题
    local_school = threading.local()  # 定义个全局变量


    def process_student():
    std = local_school.student
    print('Hello, %s is in %s' % (std, threading.current_thread().name))


    def process_thread(std):
    local_school.student = std
    process_student()

    std1 = threading.Thread(target=process_thread, name='Thread-A')
    std2 = threading.Thread(target=process_thread, name='Thread-B')
    std1.start()
    std2.start()
    std1.join()
    std2.join()
  • 相关阅读:
    手机测试移动端项目
    事件绑定与事件委托
    jq中attr()和prop() 属性的区别
    jq 加载的几种方法
    $(document).height 与$(window).height的区别
    js动画之缓冲运动
    js动画之简单运动二
    js动画之简单运动一
    css浏览器窗口大小
    编程每一天
  • 原文地址:https://www.cnblogs.com/xiaohai2003ly/p/8652243.html
Copyright © 2020-2023  润新知