python之线程池模块之多线程操作的解决办法

内容摘要
这篇文章主要为大家详细介绍了python之线程池模块之多线程操作的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随php教程的雯雯来看看吧!
1、线
文章正文

这篇文章主要为大家详细介绍了python之线程池模块之多线程操作的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随php教程的雯雯来看看吧!

1、线程池模块

引入

代码如下:


from concurrent.futures import ThreadPoolExecutor

Python 线程池模块之多线程操作代码

2、使用线程池

一个简单的线程池使用案例

代码如下:


from concurrent.futures import ThreadPoolExecutor
import time

pool = ThreadPoolExecutor(10, 'Python')

def fun():
    time.sleep(1)
    print(1, end='')


if __name__ == '__main__':
    # 列表推导式
    [pool.submit(fun) for i in range(20) if True]

Python 线程池模块之多线程操作代码

代码如下:


from concurrent.futures import ThreadPoolExecutor
import time

pool = ThreadPoolExecutor(10, 'Python')

def fun(arg1,arg2):
    time.sleep(1)
    print(arg1, end=' ')
    print(arg2, end=' ')


if __name__ == '__main__':
    # 列表推导式
    [pool.submit(fun,i,i) for i in range(20) if True]
    # 单个线程的执行
    task = pool.submit(fun,'Hello','world')
    # 判断任务执行状态
    print(f'task status {task.done()}')
    time.sleep(4)
    print(f'task status {task.done()}')

    # 获取结果的函数是阻塞的,所以他会等线程结束之后才会输出
    print(task.result())


Python 线程池模块之多线程操作代码

3、获取结果

阻塞等待

代码如下:


print(task.result())

Python 线程池模块之多线程操作代码

批量获取结果

代码如下:


for future in as_completed(all_task):
    data = future.result()

Python 线程池模块之多线程操作代码

阻塞主线程,等待执行结束再执行下一个业务

代码如下:


# 等待线程全部执行完毕
wait(pool.submit(fun,1,2),return_when=ALL_COMPLETED)
print('')

以上就是Python 线程池模块之多线程操作代码的详细内容,更多关于Python 线程池模块的资料请关注php教程其它相关文章!

注:关于python之线程池模块之多线程操作的简单示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!