12

それぞれが作業ディレクトリを変更し、特定の作業ディレクトリに新しいものを作成したり、これらのディレクトリにファイルをコピー/移動したりするスレッドがいくつかあります。たとえば、次のように考えてください。

def thread1:
  while True:
    os.chdir('dir')
    os.mkdir('newdir')
    os.system('mv *.png newdir/')
    do something

def thread2:
  while True:
    os.chdir('another-dir')
    os.mkdir('another-newdir')
    os.system('mv *.png another-newdir/')
    do something

chdir、mkdir 関数はスレッド固有ではなく、グローバルであることを読みました。これを達成する方法は何ですか?絶対パスを使用することはできますが、それが最善の解決策ですか?

4

3 に答える 3

9

作業ディレクトリはプロセスの情報であるため、すべてのスレッドが同じ作業ディレクトリを共有します。複数のスレッドを使用する場合は、絶対パスを使用する必要があります。

モジュールを使用すると、絶対パスを非常に簡単に取得できos.pathます。

他に考慮すべきことは、外部プロセスを呼び出す代わりに、Python の標準ライブラリを使用してコピーを行うことです。

例を参照してください。

于 2013-05-05T19:57:30.007 に答える