有两种方法可以让多个线程调用同一个函数:
- 直接调用函数:每个线程可以直接调用同一个函数。这种方法适用于函数没有共享状态或共享状态是线程安全的情况。
import threading
def my_function():
# your code here
# 创建多个线程并分别调用同一个函数
thread1 = threading.Thread(target=my_function)
thread2 = threading.Thread(target=my_function)
thread1.start()
thread2.start()
- 使用线程池:将多个任务添加到一个线程池中,线程池会自动分配线程来执行任务。这种方法可以更好地管理线程的数量和资源。
import concurrent.futures
def my_function():
# your code here
# 创建线程池
with concurrent.futures.ThreadPoolExecutor() as executor:
# 提交多个任务到线程池
tasks = [executor.submit(my_function) for _ in range(5)]
# 等待所有任务完成
concurrent.futures.wait(tasks)
请注意,如果函数具有共享状态,您需要确保同步和互斥访问共享状态,以避免竞争条件和其他线程问题。可以使用锁或其他同步机制来实现这一点。