大锤python日记(线程知识点汇总)

50 阅读1分钟

Python3中的线程通过threading模块实现。以下是一些线程的基本知识和示例:

  1. 创建线程:
import threading

# 定义线程函数
def worker():
    print('Thread running')

# 创建线程对象
t = threading.Thread(target=worker)

# 启动线程
t.start()
  1. 传递参数给线程:
import threading

# 定义线程函数,传入一个参数
def worker(num):
    print(f'Thread-{num} running')

# 创建线程对象,传入不同的参数
t1 = threading.Thread(target=worker, args=(1,))  # args传递的必须是元组
t2 = threading.Thread(target=worker, args=(2,))

# 启动线程
t1.start()
t2.start()
  1. 线程同步:
import threading

# 定义全局变量和锁对象
counter = 0
lock = threading.Lock()

# 定义线程函数
def worker():
    global counter
    for i in range(1000000):
        # 获取锁
        with lock:
            # 对共享变量进行操作
            counter += 1

# 创建线程对象
t1 = threading.Thread(target=worker)
t2 = threading.Thread(target=worker)

# 启动线程
t1.start()
t2.start()

# 等待所有线程完成
t1.join()
t2.join()

# 输出计数器的值
print(f'Counter value: {counter}')

上面的代码会导致计数器不准确,因为两个线程同时对计数器进行操作。可以使用锁来解决这个问题。

  1. 定时器:
import threading

# 定义线程函数
def worker():
    print('Thread running')

# 创建定时器对象,设置5秒后启动线程
t = threading.Timer(5, worker)

# 启动定时器
t.start()

上面的代码会在5秒后启动线程,并执行worker函数。

这些是Python中线程的一些基本知识和示例。注释说明了每个步骤的作用和原理。