# Using Elixir for Data Science and Machine Learning

**URL:** <https://forum.elixirforum.com/t/using-elixir-for-data-science-and-machine-learning/849>\
**Category:** Discussions\
**Tags:** machine-learning, data-science\
**Created:** [June 13, 2016, 8:47am UTC](https://forum.elixirforum.com/t/using-elixir-for-data-science-and-machine-learning/849 "2016-06-13T08:47:11Z")\
**Posts on this page:** 1\
**Showing post:** 17

<div class="post-metadata">

**Author:** ![Qqwy](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/qqwy/32/1349_2.png) [@Qqwy](https://forum.elixirforum.com/u/Qqwy)\
**Post date:** [June 5, 2017, 1:41pm UTC](https://forum.elixirforum.com/t/using-elixir-for-data-science-and-machine-learning/849/17 "2017-06-05T13:41:41Z")

</div>

@idi527 Rather, ErlPort starts one python interpreter, which is one process (and which can be interacted with like any other process). You can indeed run multiple instances of these side-by-side but usually I don’t think there is a need to do this.

@marcusjwhelan

> Can I have a python process working on an elixir thread block another python process on another thread through elixir’s messaging system?

I think this is only possible if the to-be-blocked python Port listens for messages, i.e. using cooperative scheduling. In-VM processes are managed by the scheduler(s) and are therefore scheduled preemptively. This is not the same for a Port (which is a connected Operating-System-level process, meaning that the Operating System also handles how its CPU-time scheduled).

I do wonder where this question comes from, as it seems like a weird and complex thing that might be avoided by structuring your application differently.

---

_[View the full topic](https://forum.elixirforum.com/t/using-elixir-for-data-science-and-machine-learning/849)._
