您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页python中threading多线程作用域及用法

python中threading多线程作用域及用法

来源:华佗小知识

threading是Python标准库中用于多线程编程的模块。它提供了创建和管理线程的功能,使您能够在一个程序中同时执行多个任务。

threading库的主要作用和用法包括:

       当涉及到多线程编程的不同用法和功能时

  1. 线程间通信(使用队列):

    import threading
    import queue
    
    def producer(queue):
        for i in range(5):
            message = f"Message {i}"
            queue.put(message)
            print(f"Produced: {message}")
    
    def consumer(queue):
        while True:
            message = queue.get()
            if message == 'STOP':
                print("Consumer stopped")
                break
            print(f"Consumed: {message}")
    
    # 创建队列
    message_queue = queue.Queue()
    
    # 创建生产者线程和消费者线程
    producer_thread = threading.Thread(target=producer, args=(message_queue,))
    consumer_thread = threading.Thread(target=consumer, args=(message_queue,))
    
    # 启动线程
    producer_thread.start()
    consumer_thread.start()
    
    # 等待生产者线程执行完成
    producer_thread.join()
    
    # 发送停止信号到队列,等待消费者线程执行完成
    message_queue.put('STOP')
    consumer_thread.join()
    
    print("所有线程执行完成")

    我们创建了一个队列 message_queue,然后启动了一个生产者线程 producer_thread 和一个消费者线程 consumer_thread。生产者线程负责向队列中放入消息,消费者线程负责从队列中取出消息并处理。通过队列作为线程间的通信机制,实现了生产者和消费者之间的协调和同步。

    import threading
    
    def periodic_function():
        print("Hello, world!")
    
    # 创建定时器线程,每隔2秒执行一次 periodic_function
    timer_thread = threading.Timer(2, periodic_function)
    
    # 启动定时器线程
    timer_thread.start()
    
    # 等待定时器线程执行完成
    timer_thread.join()
    
    print("定时器线程执行完成")

    我们使用 threading.Timer 类创建了一个定时器线程 timer_thread,并指定定时器的时间间隔为 2 秒。定时器线程会在指定的时间间隔后自动执行 periodic_function。通过定时器线程,我们可以定期执行某个操作。

    import threading
    import time
    
    def daemon_thread():
        while True:
            print("Daemon thread is running...")
            time.sleep(1)
    
    # 创建守护线程
    daemon_thread = threading.Thread(target=daemon_thread)
    daemon_thread.daemon = True
    
    # 启动守护线程
    daemon_thread.start()
    
    # 主线程等待一段时间
    time.sleep(5)
    
    print("主线程执行完成")

    我们创建了一个守护线程 daemon_thread,并将其设置为守护线程(daemon_thread.daemon = True)。守护线程会在主线程结束时自动退出,不需要显式地调用 join() 方法。在这个示例中,主线程等待 5 秒后结束,守护线程也会相应地退出。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务