Thread get off from CPU occasionally. I suspect.

Rajat rajat.dudeja at gmail.com
Fri Jan 29 12:30:18 CET 2010


Hi,

I'm using Python 2.6 and using the threading module.
In a python module (parent module) I'm importing main() function from
another python module. I'm runnin this main() function on a Python
thread so that I can periodically check in the parent thread/module if
the new thread is up and running. This information that the python
script running on the new thread is still up and running is passed to
a 3rd party application (in a manner known to 3rd party).

As 3rd party is waiting for this new thread to finish. It waits for 3
mins and on told to it by the parent thread that new thread is still
running, the 3rd party then starts to wait again for 3 mins.

I've successfully implemented this functionality and it runs well
except for a rare chance when the new thread does not completely runs.
However, most of the cases the new thread runs completely. I cannot
understand why and when the new thread gets off the CPU or crashes or
any other thing?

I'm not able to figure out what is happening.?

The code in the parent thread that starts the new thread is as
follows?

exec("from " + passed_script_file + " import main") #imported main
function. It works.
import threading
import time
p = RunTestScript(main)
p.start()
t_nought = time.time()
logSystemInfo(t_nought)
seconds_passed = 0
keep_alive_set = 0
while p.isAlive() == True:
    p.join(60.0)
    if p.isAlive() == True:
        seconds_passed = time.time() - t_nought
        if seconds_passed >= 120:
            t_nought =  time.time()
            if keep_alive_set != 1:    # 3rd party way of informing
that the new thread is alive.
                request = 'SET SHARED VAR KEEP_ALIVE=%d' %(1)
                res = handle.submit('local', 'VAR', request)
                if (res.rc != 0):
                    logSystemError('[PyInt] Error: STAF local VAR %s
failed, RC: %s, Result: %s\n'                     % (request, res.rc,
res.result))
                    return res.rc
                keep_alive_set = 1



Earlier, when I did not run the main function on a new thread, it
always used to run completely. I used to run it as:

exec("from " + passed_script_file + " import main")
retCode = main()



Thanks and regards,
Rajat



More information about the Python-list mailing list