跳至主要內容

两个线程交替打印数字

yczha小于 1 分钟Python多线程多线程Python

题目表述

编写两个线程,一个打印偶数、一个打印奇数;要求按顺序打印。

解答

Python 中线程同步可以通过锁(Lock)、信号量(Semaphore)、条件(Condition)、事件机制(Event)、队列(Queue)来实现。

代码实现

# 两个线程,一个打印偶数、一个打印奇数;按顺序打印
import threading


lock1 = threading.Lock()
lock2 = threading.Lock()
lock2.acquire()


def print_odd(upper=100):
    """打印奇数"""
    for i in range(1, upper, 2):
        lock1.acquire()
        print(i)
        lock2.release()


def print_even(upper=100):
    """打印偶数"""
    for i in range(2, upper, 2):
        lock2.acquire()
        print(i)
        lock1.release()


if __name__ == "__main__":
    t1 = threading.Thread(target=print_odd)
    t2 = threading.Thread(target=print_even)
    t1.start()
    t2.start()
    t1.join()
    t2.join()