进程池与线程池(concurrent.futures)

复制代码
 1 from concurrent.futures import ProcessPoolExecutor
 2 import os,time,random
 3 def task(n):
 4     print('%s is running'%os.getpid())
 5     time.sleep(random.randint(1,2))
 6     return n**2
 7 if __name__ == '__main__':
 8     p = ProcessPoolExecutor()     #默认开启四个进程池
 9     l = []
10     start = time.time()
11     for i in range(10):
12         obj = p.submit(task,i)
13         l.append(obj)
14     p.shutdown()
15     print('='*30)
16     print([obj for obj in l])
17     print(time.time() - start)
进程池
复制代码
复制代码
 1 from concurrent.futures import ThreadPoolExecutor
 2 import threading
 3 import os,time,random
 4 def task(n):
 5     print('%s:%s is running'%(threading.currentThread().getName(),os.getpid()))
 6     time.sleep(random.randint(1,2))
 7     return n**2
 8 if __name__ == '__main__':
 9     t = ThreadPoolExecutor()
10     l = []
11     start = time.time()
12     for i in range(10):
13         obj = t.submit(task,i)
14         l.append(obj)
15     t.shutdown()
16     print('='*30)
17     print([obj.result() for obj in l])   #可以获取结果
18     print(time.time() - start)
线程池
复制代码
复制代码
 1 from concurrent.futures import ProcessPoolExecutor
 2 import os,time,random
 3 def task(n):
 4     print('%s is running'%os.getpid())
 5     time.sleep(1)
 6     return n**2
 7 if __name__ == '__main__':
 8     p = ProcessPoolExecutor()
 9     start = time.time()
10     for i in range(10):
11         res = p.submit(task,i).result()    #同步执行,速度较慢,一个等一个
12         print(res)
13     print('='*30)
14     print(time.time() - start)
补充
复制代码
posted @   一石数字欠我15w!!!  阅读(316)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示