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

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 03: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月15日
  • 已采纳回答 9月8日
  • 创建了问题 9月7日

悬赏问题

  • ¥20 校园网认证openwrt插件
  • ¥15 以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。
  • ¥15 某东JD算法逆向算法
  • ¥15 求GCMS辅导数据分析
  • ¥30 SD中的一段Unet下采样代码其中的resnet是谁跟谁进行残差连接
  • ¥15 Unet采样阶段的res_samples问题
  • ¥60 Python+pygame坦克大战游戏开发实验报告
  • ¥15 R语言regionNames()和demomap()无法选中中文地区的问题
  • ¥15 Open GL ES 的使用
  • ¥15 我如果只想表示节点的结构信息,使用GCN方法不进行训练可以吗
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部