> Nim would be a good option to produce fast python packages?

Not really. While it is possible - there are package like `nimporter` who can 
export Nim code to Python - it's overly complicated for little benefit. If you 
start using Nim, it's best to work entirely in Nim and use C++ library through 
FFI for what's missing.

> I need to use a lot of multiprocessing to parallelize things. Is this quite 
> smooth in Nim? or is it crazy as in C++? or almost impossible due to GIL as 
> in Python.

Multicore processing is relatively okay. The threading is something that should 
be improved in 2.0, there are work in progress related to that (see `ßtd/tasks` 
for example).

Otherwise, it's relatively easy to use openMP. Parallelism is handled for you 
in `Arraymancer`, you can also use `Weave` or 
<https://github.com/status-im/nim-taskpools> manipulating parallisation without 
having to rely on a `thread` object.

> I also learned Rust and it produces packages in python. The only problem is 
> that simple things are complicated in Rust and in short-run it's not worth it.

The main benefit of Python is easier-to-use API compared to C++ and Rust. Nim 
doesn't need Python to produce nice API, mostly du to its metaprogramming 
features and clean syntax. Small program stay simple but the language can keep 
on scaling even on bigger project.

I would start with taking a look at Arraymancer to see what already exists

Reply via email to