現在のコードは次のとおりです。
def export_data(file):
<runs the db2 database command to export tables to file>
def export_to_files(yaml):
logger = logging.getLogger("export_to_files")
thread1 = threading.Thread(target=export_data, args=[out_file1])
thread1.start()
thread2 = threading.Thread(target=export_data, args=[out_file2])
thread2.start()
thread1.join()
thread2.join()
def main():
export_to_files()
if __name__ == "__main__":
main()
私の理解ではjoin()
、呼び出しスレッドのみをブロックします。thread1.join()
ただし、それが実行をブロックすることさえありませんでしたthread2
。本質的に、コードは 1 つのスレッドのみを実行しますthread1
。
メインスレッドが両方の完了を待機している間に、両方のスレッドを同時に実行するにはどうすればよいですか?
編集:私は修正されたままです.2つのスレッドは実行されますが、実際にある時点で「実行」しているのは1つのスレッドだけのようです.
さらに詳しく説明すると、callable_method
はデータベースからデータを読み取り、ファイルに書き込みます。2 つのファイルが更新されているのがわかりますが (各スレッドが別のファイルに書き込みます)、一方のファイルはかなりの時間更新されていませんが、もう一方のファイルは現在の時刻に関して最新です。
使用されている接続オブジェクトはありません。クエリは、db2 コマンド ライン インターフェイスから実行されます。