for file in files: condent.append(pd.read_csv(file,sep=',')) print(file) df=pd.concat(condent,axis=0) print('ok') df.columns=['ID','date','time','chepai','jindu','weidu','v','passger'] df.drop(columns='ID',inplace=True)for i in range(df.shape[0]): df.iloc[i, 1] = timeChangeintoshixi(df.iloc[i, 1])def timeChangeintoshixi(time): #150902 第0个时间段0~15min time=int(time/100)#1509 time=int(time/100)*4+int((time%100)/15) return time*15将以上代码修改成多线程多进程模式,提高for循环速率
时间: 2023-08-08 15:12:31 浏览: 60
以下是使用多线程和多进程的代码示例:
使用多线程:
```python
import pandas as pd
import glob
import concurrent.futures
def read_csv(file):
return pd.read_csv(file, sep=',')
def main():
files = glob.glob('*.csv')
content = []
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
futures = [executor.submit(read_csv, file) for file in files]
for future in concurrent.futures.as_completed(futures):
content.append(future.result())
df = pd.concat(content, axis=0)
df.columns = ['ID', 'date', 'time', 'chepai', 'jindu', 'weidu', 'v', 'passger']
df.drop(columns='ID', inplace=True)
for i in range(df.shape[0]):
df.iloc[i, 1] = timeChangeintoshixi(df.iloc[i, 1])
print('ok')
def timeChangeintoshixi(time):
time = int(time / 100)
time = int(time / 100) * 4 + int((time % 100) / 15)
return time * 15
if __name__ == '__main__':
main()
```
使用多进程:
```python
import pandas as pd
import glob
import concurrent.futures
def read_csv(file):
return pd.read_csv(file, sep=',')
def main():
files = glob.glob('*.csv')
content = []
with concurrent.futures.ProcessPoolExecutor(max_workers=4) as executor:
futures = [executor.submit(read_csv, file) for file in files]
for future in concurrent.futures.as_completed(futures):
content.append(future.result())
df = pd.concat(content, axis=0)
df.columns = ['ID', 'date', 'time', 'chepai', 'jindu', 'weidu', 'v', 'passger']
df.drop(columns='ID', inplace=True)
for i in range(df.shape[0]):
df.iloc[i, 1] = timeChangeintoshixi(df.iloc[i, 1])
print('ok')
def timeChangeintoshixi(time):
time = int(time / 100)
time = int(time / 100) * 4 + int((time % 100) / 15)
return time * 15
if __name__ == '__main__':
main()
```
注意:使用多进程时,需要在 `if __name__ == '__main__':` 条件下调用 `main()` 函数。