Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regarding GIL in python

I know GIL blocks python from running its threads across cores. If it does so, why python is being used in webservers, how are the companies like youtube, instagram handling it.

PS: I know alternatives like multiprocessing can solve it. But it would be great if anyone can post it with a scenario that was handled by them.

like image 326
Arunagiriswaran Ezhilan Avatar asked Apr 20 '18 05:04

Arunagiriswaran Ezhilan


People also ask

Why is GIL needed?

GIL can provide a thread-safe memory management which was much required. It's a simple design as only one lock has to be managed. GIL also provides a performance boost to the single-threaded programs. It makes it possible to integrate many C libraries with Python.

How does threading work in Python with GIL?

The GIL allows only one OS thread to execute Python bytecode at any given time, and the consequence of this is that it's not possible to speed up CPU-intensive Python code by distributing the work among multiple threads. This is, however, not the only negative effect of the GIL.

What is the use of global interpreter lock?

A global interpreter lock (GIL) is a mechanism used in computer-language interpreters to synchronize the execution of threads so that only one native thread (per process) can execute at a time. An interpreter that uses GIL always allows exactly one thread to execute at a time, even if run on a multi-core processor.

What is synchronization discuss about global interpreter lock GIL in Python?

Global Interpreter Lock is easy to implement in python as it only needs to provide a single lock to a thread for processing in python. The GIL is simple to implement and was easily added to Python. It provides a performance increase to single-threaded programs as only one lock needs to be managed.


1 Answers

Python is used for server-side handling in webservers, but not (usually) as webserver.

On normal setup: we have have Apache or other webserver to handles a lot of processes (server-side) (python uses usually wsgi). Note usually apache handles directly "static" files. So we have one apache server, many parallel apache processes (to handle connection and basic http) and many python processes which handles one connection per time.

Each of such process are independent each others (they just use the same resources), so you can program your server side part easily, without worrying about deadlocks. It is mostly a trade-off: performance of code, and easy and quickly to produce code without huge problems. But usually webserver with python scale very well (also on large sites), and servers are cheaper then programmers.

Note: security is also increased by having just one request in a process.

like image 98
Giacomo Catenazzi Avatar answered Oct 14 '22 07:10

Giacomo Catenazzi