python多线程 怎么分批开启

threading怎么分批开启线程,比如我要开100个,他会每次运行10个,等这10个运行结束再开启下10个。现在我开始100个他会一次性全开启,处理起来很慢,半天没反应

你可以每次开启10个然后记录一下线程的id,每过一段时间检查一下这个10个id是否还存活

"""
将你要执行的任务放入多列中 比如说有1000个接口, 你可以创建10个线程(worker)去执行,直到所有接口处理完毕
下面代码是模拟 0-39数字延时打印  
可以对比
for i in range(0, 20):
    time.sleep(1)
    print("url:{}, 结果是:{}".format(i, i * 2))

"""
from threading import  Thread
import time
try:
   import queue
except ImportError:
   import Queue as queue

url_queue = queue.Queue()


def crawl_worker(q):
  while True:
    url = q.get()
    if url is None:
        break

    # 这里是需要执行的操作   模拟等待操作  然后让每个数字乘以2
    time.sleep(1)
    print("url:{}, 结果是:{}".format(url, url*2))



# 将所有接口或者列表数据加入队列中 这里以生成0-39为例
for url in range(0,40):
  url_queue.put(url)

num_workers = 10

workers = [
  Thread(target=crawl_worker, args=(url_queue,))
  for _ in range(num_workers)
]

print("-------------", url_queue.qsize())
# 为每个worker添加一个 None 信号 直到所有工作完成
for worker in workers:
    url_queue.put(None)

print("-------------", url_queue.qsize())
# 启动所有
for worker in workers:
  worker.start()


# 等待完成
for worker in workers:
    worker.join()