📅  最后修改于: 2023-12-03 14:51:20.385000             🧑  作者: Mango
在Python中,创建线程有多种方式可供选择。本文将介绍其中的五种方式。
使用threading
模块创建线程是Python中最常见的方法之一。下面是一个简单的例子:
import threading
def worker():
"""线程执行的函数"""
print('Hello, World!')
t = threading.Thread(target=worker)
t.start()
使用threading
模块创建线程的步骤如下:
threading
模块;Thread
对象,并指定它要执行的函数;start
方法启动线程。继承Thread
类并重写其run
方法是另一种创建线程的方式。下面是一个例子:
import threading
class WorkerThread(threading.Thread):
def run(self):
"""重写run方法"""
print('Hello, World!')
t = WorkerThread()
t.start()
使用这种方式创建线程的步骤如下:
threading
模块;Thread
类;run
方法;start
方法。使用concurrent.futures
模块的ThreadPoolExecutor
类可以创建一个线程池。下面是一个例子:
import concurrent.futures
def worker():
"""线程执行的函数"""
print('Hello, World!')
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
for i in range(3):
executor.submit(worker)
使用ThreadPoolExecutor
创建线程池的步骤如下:
concurrent.futures
模块;ThreadPoolExecutor
对象,指定最大工作线程数;submit
方法向线程池提交任务。使用queue
模块创建队列和线程可以让线程间的数据共享更加简单。下面是一个例子:
import queue
import threading
def worker(q):
"""线程执行的函数"""
message = q.get()
print('Hello, %s!' % message)
q = queue.Queue()
t = threading.Thread(target=worker, args=(q,))
t.start()
q.put('World')
使用queue
模块创建队列和线程的步骤如下:
queue
和threading
模块;Queue
对象;Thread
对象,并指定它要执行的函数和参数;使用asyncio
模块创建协程可以让我们写出更加高效的异步代码。下面是一个例子:
import asyncio
async def worker():
"""协程执行的函数"""
print('Hello, World!')
async def main():
"""主函数"""
await asyncio.gather(worker(), worker())
asyncio.run(main())
使用asyncio
模块创建协程的步骤如下:
asyncio
模块;async
修饰符;await
修饰符来调用协程;asyncio.run
方法运行主函数。