Jin· 2022-09-07 10:20 采纳率: 66.7%
浏览 16
已结题

python多线程怎么跑?

python到底怎么开启多线程啊~~
compress是一个压缩图片的函数,os.wait是遍历了所有的目录和文件
teach me怎么开启多线程跑这个函数😭

originpath = r"E:\标签照片"
targetpath = r"E:\标签照片\output"
    for root, dirs, files in os.walk(originpath):
        for file in files:
            compress(file,originpath,targetpath)
  • 写回答

4条回答 默认 最新

  • honestman_ 2022-09-07 11:00
    关注

    线程池代码,直接把线程执行的时候改成你的处理文件的代码就行:

    import threading
    # 从数据库提取数据的类
    class Scheduler():
        def __init__(self):
            self._lock = threading.RLock()
            self.start = 0
            # 每次取10000条数据
            self.step = 10000
    
        def getdata(self):
            # 上锁,以免多线程同时对数据库进行访问,取出重复数据
            self._lock.acquire()
            # 进行取数据操作
            data = 'select * from table' \
                   'where id between self.start and self.start + self.step'
            # 取完数据后,指针后移
            self.start += self.step
            self._lock.release()
            return data
    
    # 处理数据的过程写在这里
    def processdata():
        # 从该实例中提取数据
        data = scheduler.getdata()
        while data:
            # 进行处理数据的具体操作:
            # 去重、补缺、运算...只要还有数据,本线程就继续取新数据
            # 然后再获取数据,进行循环
            data = scheduler.getdata()
    
    # 创建多线程,threads_num为创建的线程数
    def threads_scheduler(threads_num):
        threads = []
        for i in range(threads_num):
            # 创建线程
            td = threading.Thread(target=processdata, name='th'+str(i+1))
            threads.append(td)
        for t in threads:
            # 启动线程
            t.start()
            for t in threads:
                # 子线程守护
                t.join()
                print('数据已全部处理成功')
    
    if __name__=='__main__':
        # 实例化一个调度器,初始化参数
        scheduler = Scheduler()
        # 创建线程,开始处理数据
        threads_scheduler(4)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月16日
  • 已采纳回答 9月8日
  • 创建了问题 9月7日

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题