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

最新文章

  1. AR初体验:宣传G20
  2. MySQL安装步骤
  3. sql 比模糊查询速度快的查询方法
  4. 分享SQL Server 2012/2014内存数据库,AlwaysOn,参考教材与网上总结
  5. python随文档
  6. sqlserver2005数据库18456错误(转)
  7. HDU-5373 The shortest problem
  8. OpenCV-Python教程9-平滑图像
  9. weixin://connectToFreeWifi/?apKey=协议如何跳转到微信客户端打开在wifi指定任意网页?
  10. oracle查看某表字段类型
  11. 深入FM和FFM原理与实践
  12. vlookup函数应用
  13. vue 将值存储到vuex 报错问题
  14. JAVA 是否会发生内存泄露(转)
  15. java的两种冒泡算法
  16. win10 nodejs指定ionic版本安装(npm方式)
  17. 37行代码实现一个简单的打游戏AI
  18. php ZeroMQ 的使用
  19. Hadoop部署方式-本地模式(Local (Standalone) Mode)
  20. 用Win32编写发送消息至Notepad++的程序

热门文章

  1. CodeGym自学笔记12——类名
  2. mac 暗黑破坏神2
  3. Tiup离线安装TIDB集群4.0.16版本
  4. Web学习篇—Http协议
  5. java判断上传图片格式
  6. ubuntu新建的用户的终端前不能/没有显示路径
  7. WPF美化常用(渐变)
  8. 使用go自定义生成项目LISENSE(授权协议)
  9. ES 基础操作
  10. cgroup和Linux Namespace基础操作