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)
线程池代码,直接把线程执行的时候改成你的处理文件的代码就行:
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)
你找个多线程得例子,之后把你要的东西放进去
搜索:python 线程池
其实很简单,没几句代码
不要自己开线程,你开一个两个还好,遍历文件夹每个文件都开一个线程,别给cpu搞崩溃了