2014-01-28 30 views
0

我已經編寫了讀取遠程系統文件的代碼,這些文件工作正常,但讀取遠程文件需要很長時間。我想提高閱讀的表現。如何在python中提高讀取遠程系統文件的性能

我也用python線程來讀取遠程系統文件。這也需要很多時間。現在任何人都可以讓我知道更好的建議。

我已經使用這個代碼,用於讀取遠程系統文件,

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分鐘。所以我無法提高閱讀效果。請讓我知道了提高性能的閱讀...

感謝...

回答

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 
相關問題