I have a Python/wxPython program where the GUI is the main thread and I use another thread to load data from a file.  Sometimes the files are big and slow to load so I use a wxPulse dialog to indicate progress.
As I load the file, I count the number of lines that have been read in the counting thread, and I display this count in the wxPulse dialog in the main thread.  I get the count in the main thread by reading the same variable that is being written to by the loading thread.  
Is this "thread safe"?  Could this somehow cause problems?  I've been doing it for awhile and it has been fine so far.
PS. I know I could use a queue to transfer the count, but I'm lazy and don't want to if I don't have to.
This is fine because you have only one writer thread. Read only operations are always thread-safe. The exception to this arises when you are reading more than one related value and expecting some form of consistency between them. Since writes can happen at any time, reads of multiple values may not be consistent and indeed may not even have any sensible program state at all. In this case, locks are used to make the multiple reads appear to happen as a single atomic operation exclusive to any writes.
Python: safe to read values from an object in a thread?