2017-12-14 29 views
1

データベースからデータを読み込んだ後、データを返してcsvファイルに書き出したいとします。どのようにマルチ処理を使用してそれを行うには?ファイルの書き込みと戻り値のPythonマルチ処理

def get_data(): 
    data = get_data_from_database() #a dataframe 
    data.to_csv('data.csv', index=False) #step 1: write to csv file 
    return data #step 2: return data 

手順1と手順2を行うにはマルチプロセスを使用するにはどうすればよいですか?

+0

ような何かを行うことができますことを心配されていない場合。マルチプロセッシング(マルチスレッド)は通常、複数のプロセス(スレッド)によって同じタスクを実行しています。ここでは、パイプラインを使用することができます:process_reading_database-> process_writing_csv_and_passing data-> process_using_data –

+0

ありがとうございました。 csvファイルを書き込むには時間がかかるので、ファイルを書き込んで返すプロセスを待つ必要はありません。私は同時にファイルを書いて、データを返すが、逐次プロセスではない。 – Chan

+0

あなたはNode.js 'streaming'のようなものを探していますか? –

答えて

1

マルチスレッドを意味しますか?もしそうであれば、あなたはどこか別の場所にファイルを書きたいと思うなら、あなたはロックを使うべきです、そして、それはコードの痛みになるかもしれません!

しかし、あなたは私たちが一般的にここに*マルチプロセッシング*と呼んでいるもののための場所はありません。この

import threading 

def thread_write(data): 
    data.to_csv('data.csv', index=False) # step 1: write to csv file 

def get_data(): 
    data = get_data_from_database() #a dataframe 
    t = threading.Thread(target=thread_write, args=(data,)) #pass your function as target of thread, and it's input variables as a tuple to args 
    t.start() 
    return data # step 2: return data 
+1

ありがとう、ハミドサジャーディ。 – Chan

1

これを試してください。

def get_data(): 
     data = [] 
     data = get_data_from_database() #a dataframe 
     if len(data) >0: 
      for i in range (len(data)): 
      data[i].to_csv('data.csv', index=False) #step 1: write to csv file 
     return data #step 2: return data 
+0

ありがとう。私はcsvファイルを書いて、同時にデータを返したいと思っています。どうやってするの? – Chan

関連する問題