Threads vs Processes

Carl J. Van Arsdall cvanarsdall at mvista.com
Thu Jul 27 14:20:03 EDT 2006


bryanjugglercryptographer at yahoo.com wrote:
> Carl J. Van Arsdall wrote:
>   
>> Ah, alright, I think I understand, so threading works well for sharing
>> python objects.  Would a scenario for this be something like a a job
>> queue (say Queue.Queue) for example.  This is a situation in which each
>> process/thread needs access to the Queue to get the next task it must
>> work on.  Does that sound right?
>>     
>
> That's a reasonable and popular technique. I'm not sure what "this"
> refers to in your question, so I can't say if it solves the
> problem of which you are thinking.
>
>   
>>  Would the same apply to multiple
>> threads needed access to a dictionary? list?
>>     
>
> The Queue class is popular with threads because it already has
> locking around its basic methods. You'll need to serialize your
> operations when sharing most kinds of objects.
>
>   
Yes yes, of course.  I was just making sure we are on the same page, and 
I think I'm finally getting there.


>> Now if you are just passing ints and strings around, use processes with
>> some type of IPC, does that sound right as well?
>>     
>
> Also reasonable and popular. You can even pass many Python objects
> by value using pickle, though you lose some safety.
>   
I actually do use pickle (not for this, but for other things), could you 
elaborate on the safety issue? 


>   
>>  Or does the term
>> "shared memory" mean something more low-level like some bits that don't
>> necessarily mean anything to python but might mean something to your
>> application?
>>     
>
> Shared memory means the same memory appears in multiple processes,
> possibly at different address ranges. What any of them writes to
> the memory, they can all read. The standard Python distribution
> now offers shared memory via os.mmap(), but lacks cross-process
> locks.
>   
> Python doesn't support allocating objects in shared memory, and
> doing so would be difficult. That's what the POSH project is
> about, but it looks stuck in alpha.
>
>
>   


-- 

Carl J. Van Arsdall
cvanarsdall at mvista.com
Build and Release
MontaVista Software




More information about the Python-list mailing list