Python多线程应用文件I/O

在网上搜索了Python多线程和多进程的应用场景
多线程:适合io操作密集型的任务(主要为读写文件,网络并发);
多进程:适合cpu密集操作型的任务,主要使用cpu来计算,如大量的数学计算。

使用实例验证python 程序执行 I/O任务时,多线程与多进程的性能差异

实例任务:建立200个文本文件并写入文字”测试“1000遍。普通函数建立#1-200号文件,多进程建立#201-400号文件,多线程建立#401-600号文件。

import os
import time
import threading
from multiprocessing import Pool
class mythread(threading.Thread):  #构造类,继承Thread类
    def __init__(self,i):
        threading.Thread.__init__(self)
        self.i=i        
    def run(self):    #重写run()方法,实现建立文件写入内容的功能
        dir=os.getcwd()
        filedir="\\".join([dir,"testfile"])
        if not os.path.exists(filedir):
            os.makedirs(filedir)
        filename="\\".join([filedir,str(self.i)+".txt"])
        with open(filename,"w+") as fp:
            s="测试"*1000
            fp.write(s)
def create_file(i):
    dir=os.getcwd()
    filedir="\\".join([dir,"testfile"]) 
    if not os.path.exists(filedir):
        os.makedirs(filedir)
    filename="\\".join([filedir,str(i)+".txt"])
    with open(filename,"w+") as fp:
        s="测试"*1000
        fp.write(s)
if __name__ == "__main__":
    start=time.time()
    for i in range(1,201):  #没有使用线程建立前200个文件
         create_file(i)
    end=time.time()
    print("不用线程时间:",end-start)
    start1=time.time()
    with Pool(5) as p:
        p.map(create_file,range(201,401)) 
    end1=time.time()
    print("使用多进程时间",end1-start1)
    start2=time.time()
    t1=[]
    for i in range(401,601):  #使用线程建立后200个文件
        t=mythread(i)
        t1.append(t)
    for i in t1:
        i.start()    
    end2=time.time()
    print("使用多线程时间:",end2-start2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值