Kyle Rickey wrote: > I'm trying to get the file version of an executable file on our network. > At times our network is quite slow, so to prevent blocking of my main > application, I decided to put the code into a separate thread. > > Depending on the network speed, it can take up to 30 seconds to return. > This is because of a vpn connection etc. > > But when put in a separate thread, it will block the entire application > until the function returns. Take the following code for example: > > import threading, time, os, win32api > > file = r"\\network_share\file.exe" > > def get_version_number(): > if os.path.exists(file): > info = win32api.GetFileVersionInfo(file, "\\") > ms = info['FileVersionMS'] > ls = info['FileVersionLS'] > return win32api.HIWORD(ms), win32api.LOWORD(ms), > win32api.HIWORD(ls), win32api.LOWORD(ls) > > def test(): > print ".".join([str(i) for i in get_version_number()]) > > print "AA" > threading.Thread(target=test).start() > while 1: > print "AA" > time.sleep(0.5) > > The output looks like this: > > AA > AA > 2.0.0.15 > AA > .. > > The problem is after those 1st to "AA"'s got printed, no more were > printed until the version number came back. Any ideas why this is > happening? > I've got python 2.5 and pywin32-210. > > -Kyle Rickey
This function doesn't release the thread lock when making the API calls. I'll try to remedy this before the next release. Roger _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32