Sockets to Parallelism Threads a way to execute multiple concurrent flows of control with a single process threads are implemented as kernel tasks that share resources each thread gets its own thread id all threads share a process id thread groups manage resource sharing and accounting Feature Posix Thread Python Threads Memory Model Direct shared memory access Shared memory but GIL-controlled Creation overhead lightweight similar overhead Thread safety manually synchronization required built-in thread safe object Implementation native OS implementation Python interpreter managed The Global interpreter lock is a road block IO bound operations benifit from it (this is very dependent on the implementation, im saying this not my teacher...) CPU vs IO Bound Operations matrix multiplication (cpu bound) sorting (depends...) sums (depends...) random subset sums (io bound) technically all of these are dependent but