David M. Cotter, 26.07.2013 08:15:
> in my app i initialize python on the main thread, then immediately call 
> PyEval_SaveThread() because i do no further python stuff on the main thread.
> 
> then, for each script i want to run, i use boost::threads to create a new 
> thread, then on that thread i "ensure" the GIL, do my stuff, then release it.
> 
> so, to test concurrency, on my first background thread, i do an infinite loop 
> that just logs "i'm alive", then calls sleep(0.25)
> 
> so that thread continues to run forever (with it's GIL ensured)
> 
> according to the doc: "In order to emulate concurrency of execution, the 
> interpreter regularly tries to switch threads"
> 
> so i figure i can run another thread that does a single print statement:
> 
>> ensure gil
>> print my thing
>> release gil
> 
> and this DOES run.  however, after releasing it's gil, i guess the interpeter 
> gets back to the first back thread, but then has this error immediately:
> 
>     9: Traceback (most recent call last):
>     9:   File "<string>", line 70, in ?
>     9:   File "<string>", line 55, in main
>     9: AttributeError: 'builtin_function_or_method' object has no attribute 
> 'sleep'
> 
> suddenly the sleep module has been unloaded?? huh?  i thought the thread 
> state had been preserved?

You didn't show your code, but as a wild guess, maybe you did

    from time import time

instead of

    import time

somewhere? If not, please provide the exact example code that you are running.

Stefan


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to