2017-07-18 3 views
1

私はpythonを使って、各自治体のウェブサイトから何かをcralwsし、合計ウェブサイト数が100以上になるという厄介なcralwerシステムを書いています。ウェブページが変更された場合に備えて、しかし、リロードがスレッドセーフであるかどうか疑問に思っています。スレッド1ではmralle Cralwer1をリロードしていますが、同時にスレッド2はCralwer1を使用しています。スレッド1のリロードによってスレッド2が失敗するのですか?もしそうなら、私はロックや何かをしなければならない、そうでなければ、私は喜んで余分な仕事なしでリロードを行うことができます。誰も私を助けることができますか?Pythonリロードは安全ですか?

+0

なぜこれに 'reload'を使用していますか? – user2357112

+0

ホットアップデート用。 –

答えて

1

はPythonのリロードスレッドは安全ですか?

リロード()は、モジュール内のすべての純粋なPythonコードを実行します。どんな純粋なpythonのステップでも、いつでもスレッドを切り替えることができます。だから、これは間違いなく安全ではありません。

0

reload = Crawler1でトップレベルコードを再実行します。

は、一般的にすることができます、詳細情報/コードサンプルなしで話す:

  • は、例えば、物事をキックオフ「運用」トップレベルのコードをカプセル化それを関数またはクラスに入れ、モジュール全体をリロードせずに呼び出すことができます。これには、クリーンアップ機能の呼び出し/追加が含まれます。

  • グローバル変数を使用します。グローバル変数を使用します。スレッド1とスレッド2は、互いの踏み越えを防ぐためにフリップして意識します。これも同様に拡張されませんが、おそらくロックの使用を防止/遅延する可能性があります。

  • 実際には難しい、 彼らも、コンテキストマネージャをサポートしていないロックを使用: https://docs.python.org/3/library/threading.html#with-locks
関連する問題