2016-12-01 3 views
-1

サブプロセスで複数のtxtファイルをエクスポートしたいと思います。複数のファイルをサブプロセスでエクスポートする

ip_address = ['172.16.{}.{}'.format(rack_number, box_number) for box_number in stb_list] 

    ip_address = ['10.10.8.89'] # Testing for single ip 

    # def planner_events_info(): 


    #Connect to Boxes 

    if len(ip_address) > 0: 



     for ip in ip_address: 


      action = 'FullExport' 
      menu_action = 'all' 
      arg_list = [('C:\\Users\\yke01\\Documents\\StormTest\\Scripts\\Completed' 
          '\\Utils\\UPNP_Client_Cmd_Line.py')] 
      arg_list.append(' --action=') 
      arg_list.append(action) 
      arg_list.append(' --ip=') 
      arg_list.append(ip) 
      arg_list.append(' --menu=') 
      arg_list.append(menu_action) 

      x = subprocess.Popen(arg_list, shell=True) 

      # print arg_list 

      with open("output.txt", "w+") as output: 
       subprocess.call(["python", arg_list], stdout=output) 

私はoutput.txtをエクスポートすることができます。私は最大16種類のipsのスクリプトを書いています。

ip_address = ['172.16.1.1, 172.16.1.2, 172.16.1.3, 172.16.1.4, ] 

たとえば、上記のIPアドレスの場合、4つのtxtファイルをエクスポートします。どんな助けでも、感謝されます!他の後

+0

各IPに同じファイル 'output.txt'を使用しています。異なるファイルに書き込むために、各ipの 'output.txt'の名前を変更してください。 –

答えて

0

1つ - multiprocessing.Pool

からapply_asyncと

for i,ip in enumerate(ip_address): 
    filename = "output_"+str(i)+".txt" 
    #... 
    with open(filename, "w+") as output: 
     subprocess.call(["python", arg_list], stdout=output) 

2.パラレルシリアルパイプラインパイプライン

非同期実行はこれがフル稼働です例

import multiprocessing 

ip_address = ['172.16.1.1', '172.16.1.2', '172.16.1.3', '172.16.1.4', ] 

def runProcess(arg_list,output_file): 
    print('Will run:\n %s\nand save to \n %s\n'%(arg_list, output_file)) 
    x = subprocess.Popen(arg_list, shell=True) 

    with open(output_file, "w+") as output: 
     subprocess.call(["python", arg_list], stdout=output) 

tasks=[] 
#prepare list of tasks 
for i,ip in enumerate(ip_address): 
    filename = "output_"+str(i)+".txt" 
    action = 'FullExport' 
    menu_action = 'all' 
    arg_list = [('C:\\Users\\yke01\\Documents\\StormTest\\Scripts\\Completed' 
        '\\Utils\\UPNP_Client_Cmd_Line.py')] 
    arg_list.append(' --action=') 
    arg_list.append(action) 
    arg_list.append(' --ip=') 
    arg_list.append(ip) 
    arg_list.append(' --menu=') 
    arg_list.append(menu_action) 

    tasks.append((arg_list,filename)) #pairs: (arg_list,output_file) 

#run tasks 
numthreads = multiprocessing.cpu_count() 
pool = multiprocessing.Pool(numthreads) 
results = [pool.apply_async(runProcess, t) for t in tasks] 
pool.close() 
pool.join() 
関連する問題