python多线程学习记录

118 阅读1分钟

适合场景:洗数据(有一组数据,需要根据特定逻辑完成清洗,引入多线程批量执行以提高效率) 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)

测试发现,线程数并非越多越快,开发者应尽可能找到最佳的临界点,以最大化执行效率。