适合场景:洗数据(有一组数据,需要根据特定逻辑完成清洗,引入多线程批量执行以提高效率) demo1:
from math import ceil
import threading
def test(li, thnums):
num = len(li)
n = int(threading.currentThread().getName())
# 避免不能整除
count = ceil(num / thnums)
for i in range(n * count, (n + 1) * count):
# 不能越界
if i < num:
print(li[i]) # 这里替换为业务逻辑
# li为数据列表(或其他类型),thnum为线程数
def testThread(li, thnum):
for i in range(thnum):
thread = threading.Thread(target=test, args=(num, thnum), name="{}".format(i))
thread.start()
if __name__ == '__main__':
testThread(["张三", "李四", "王五", "刘六"], 2)
测试发现,线程数并非越多越快,开发者应尽可能找到最佳的临界点,以最大化执行效率。