简单的python线程池实现线程安全demo
2024-09-08 10:19:14
from concurrent.futures import ThreadPoolExecutor
import threading
import time
import sys
sys.path.append(sys.path)
test_list = [t for t in range(0,100)]
# 定义一个准备作为线程任务的函数
index = 0
lock = threading.Lock()
def action(thread_id):
global index
global test_list
global lock
while index<len(test_list):
print(f'{thread_id}执行了!')
try:
# time.sleep(random.random())
#time.sleep(random.randint(0, 3))
lock.acquire()
if index+1<len(test_list):
index += 1
callback(index)
else:
print(f'{thread_id}任务完成了!')
return
except BaseException as e:
print(e)
finally:
lock.release() def callback(index):
print(test_list[index]) def start(): # 创建一个包含4条线程的线程池
with ThreadPoolExecutor(max_workers=4) as pool:
# 使用线程执行map计算
# 后面元组有3个元素,因此程序启动3条线程来执行action函数
results = pool.map(action,(1,2,3,4))
print('--------------') if __name__ == '__main__':
pass
最新文章
- AR初体验:宣传G20
- MySQL安装步骤
- sql 比模糊查询速度快的查询方法
- 分享SQL Server 2012/2014内存数据库,AlwaysOn,参考教材与网上总结
- python随文档
- sqlserver2005数据库18456错误(转)
- HDU-5373 The shortest problem
- OpenCV-Python教程9-平滑图像
- weixin://connectToFreeWifi/?apKey=协议如何跳转到微信客户端打开在wifi指定任意网页?
- oracle查看某表字段类型
- 深入FM和FFM原理与实践
- vlookup函数应用
- vue 将值存储到vuex 报错问题
- JAVA 是否会发生内存泄露(转)
- java的两种冒泡算法
- win10 nodejs指定ionic版本安装(npm方式)
- 37行代码实现一个简单的打游戏AI
- php ZeroMQ 的使用
- Hadoop部署方式-本地模式(Local (Standalone) Mode)
- 用Win32编写发送消息至Notepad++的程序