【Python】threading控制线程的数量
Problems一次只执行5个任务,执行完5个再去执行下面5个Source Code#!/usr/bin/python# -*- coding: utf-8 -*-# @Time: 2021/6/12 12:00# @Author : SandQuantimport timeimport datetimeimport threadingmax_connections = 5# 定义最大线程数poo
·
Problems
一次只执行5个任务,执行完5个再去执行下面5个
Source Code
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time : 2021/6/12 12:00
# @Author : SandQuant
import time
import datetime
import threading
max_connections = 5 # 定义最大线程数
pool_sema = threading.BoundedSemaphore(max_connections) # 或使用Semaphore方法
def loop(i): # 任务
pool_sema.acquire() # 加锁,限制线程数
print('assignment %s start %s' % (i, datetime.datetime.today()))
time.sleep(2)
print('assignment %s end %s' % (i, datetime.datetime.today()))
pool_sema.release() # 解锁
thread_list = []
for i in range(12): # 12个任务
t = threading.Thread(target=loop, args=[i])
thread_list.append(t)
for t in thread_list:
t.start() # 调用start()方法,开始执行
for t in thread_list:
t.join() # 子线程调用join()方法,使主线程等待子线程运行完毕之后才退出
Output
assignment 0 start 2021-11-05 12:02:49.976221
assignment 1 start 2021-11-05 12:02:49.976221
assignment 2 start 2021-11-05 12:02:49.976221
assignment 3 start 2021-11-05 12:02:49.976221
assignment 4 start 2021-11-05 12:02:49.976221
assignment 1 end 2021-11-05 12:02:51.986168assignment 3 end 2021-11-05 12:02:51.986168assignment 2 end 2021-11-05 12:02:51.986168assignment 0 end 2021-11-05 12:02:51.986168assignment 4 end 2021-11-05 12:02:51.986168
assignment 5 start 2021-11-05 12:02:51.986168
assignment 8 start 2021-11-05 12:02:51.986168assignment 7 start 2021-11-05 12:02:51.986168
assignment 6 start 2021-11-05 12:02:51.986168
assignment 9 start 2021-11-05 12:02:51.986168
assignment 5 end 2021-11-05 12:02:53.994448assignment 9 end 2021-11-05 12:02:53.994448assignment 8 end 2021-11-05 12:02:53.994448assignment 7 end 2021-11-05 12:02:53.994448
assignment 6 end 2021-11-05 12:02:53.994448
assignment 10 start 2021-11-05 12:02:53.994448assignment 11 start 2021-11-05 12:02:53.994448
assignment 10 end 2021-11-05 12:02:55.996463
assignment 11 end 2021-11-05 12:02:55.996463

欢迎关注~ SandQuant 专注于全球金融数据和量化投资策略
更多推荐
所有评论(0)