Python中创建多线程可以使用内置的threading模块,具体步骤如下:
-
导入threading模块
python
import threading -
定义一个线程函数
python
def thread_func(arg1, arg2):
# do something -
创建线程对象
python
thread = threading.Thread(target=thread_func, args=(arg1, arg2))参数说明:
target
:要执行的线程函数args
:传递给线程函数的参数,以元组的形式传入
-
启动线程
python
thread.start() -
等待线程结束
python
thread.join()调用join()方法后,主线程会等待子线程执行完毕,才会继续执行下面的代码。
示例1:创建两个线程,分别打印1~10的奇数和偶数。
import threading
def print_odd():
for i in range(1, 11, 2):
print(i)
def print_even():
for i in range(2, 11, 2):
print(i)
if __name__ == '__main__':
t1 = threading.Thread(target=print_odd)
t2 = threading.Thread(target=print_even)
t1.start()
t2.start()
t1.join()
t2.join()
以上代码中,使用两个线程,分别打印1~10的奇数和偶数,最后主线程等待两个子线程执行完毕后结束。
示例2:使用线程池执行多个任务。
import concurrent.futures
def func(arg):
# do something
return result
if __name__ == '__main__':
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
# 提交10个任务
tasks = [executor.submit(func, arg) for arg in range(10)]
# 获取结果,注意调用result()方法会阻塞主线程
results = [task.result() for task in tasks]
print(results)
以上代码中,使用ThreadPoolExecutor创建一个线程池,最多同时执行5个任务。然后使用submit方法提交10个任务,最后通过遍历task列表,调用result()方法获取结果。注意,调用result()方法会阻塞主线程,需要等待任务执行完毕。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中如何创建多线程? - Python技术站