From: Christoph Z. <ci...@on...> - 2006-09-14 18:59:47
|
John Dickinson wrote: > Maybe I'm a little dense here, but I'm not seeing why os.chdir is such a > bad thing in a threaded environment. I did a little google-ing, but I > did not find anything the was talking about problems in a threaded > environment. The following program shows the problem quite clearly: ---------------------------- from os import mkdir, chdir from time import sleep from threading import Thread try: # make test dirs mkdir('dir1') mkdir('dir1/dir2') open('dir1/test', 'w').write('inside dir1') open('dir1/dir2/test', 'w').write('inside dir2') except: pass def thread1(): chdir('dir1') sleep(0.2) print "test file in dir1:", open('test').read() def thread2(): sleep(0.1) chdir('dir2') Thread(target=thread1).start() Thread(target=thread2).start() ---------------------------- From looking at the thread1 function, you would expect "inside dir1" as output, but because thread2 is interfering, it prints "inside dir2". I have added the sleep calls to make the behavior predictable. In a real threaded environment, the output would be unpredictable. -- Chris |