0

我已经编写了用于读取运行正常的远程系统文件的代码,但是读取远程文件需要很多时间。我想提高阅读性能。

我还使用 python Threading 来读取远程系统文件。这也需要很多时间。现在有人让我知道更好的建议。

我已使用此代码读取远程系统文件,

    root_folder="\\\\192.168.1.1\\C$"
    try:
        use_dict={}
        use_dict['remote']=unicode(root_folder)
        use_dict['password']=unicode("example")
        use_dict['username']=unicode("example")
        win32net.NetUseAdd(None, 2, use_dict)
        print "Network connection established"
    except:
        print "Network connection failed"

    for root, dirnames, filenames in os.walk(root_folder):
       for filename in filenames:
           match=os.path.join(root, filename)
           datafile = file(match)
           for line in datafile:
              for li in line:
                  print li

从这段代码中,读取远程系统文件需要 45 分钟的时间。如果我以本地方式读取相同的文件,则只需 5 分钟。所以我无法提高阅读性能。请让我知道以提高阅读性能...

谢谢...

4

1 回答 1

0

您可以尝试多处理。在此示例中,一个进程从网络读取数据,另一个进程打印数据,它们通过队列连接。

from multiprocessing import Process, Queue

def readfiles(q):

    root_folder="\\\\192.168.1.1\\C$"
    try:
        use_dict={}
        use_dict['remote']=unicode(root_folder)
        use_dict['password']=unicode("example")
        use_dict['username']=unicode("example")
        win32net.NetUseAdd(None, 2, use_dict)
        print "Network connection established"
    except:
        print "Network connection failed"

    for root, dirnames, filenames in os.walk(root_folder):
        for filename in filenames:
            match=os.path.join(root, filename)
            datafile = file(match)
            for line in datafile:
                q.put(line)
    q.close()


if __name__ == '__main__':
    q = Queue()
    p = Process(target=readfiles, args=(q,))
    p.start()

    while p.is_alive() or not q.empty():
        for li in q.get():
            print li
于 2014-01-28T13:43:10.907 回答