0

假设我有 50 个进程,我正在使用它们对(比如说)20000 个不同的输入值进行操作。(我正在使用 pathos 库,我认为它的操作类似于 Python 中的多处理库。)

thread_pool = pathos.multiprocessing.ProcessingPool(threads=50)
thread_pool.map(function, inputs)

我想为每个进程创建一个 SQLAlchemy 数据库引擎(但我没有资源为每个输入值创建一个)。然后,我希望使用该过程处理的所有输入都可以与同一个数据库引擎一起使用。

我怎样才能做到这一点?

4

2 回答 2

1

我是 和 的pathos作者multiprocess。事实证明这multiprocess实际上是pathos在使用什么,但也许情况并不明显。你可以这样做pathos

>>> import pathos
>>> pathos.pools._ProcessPool 
<class 'multiprocess.pool.Pool'>

Pool以上是直接来自的原始内容multiprocess,whilepathos.pools.ProcessPool是具有一些附加功能的更高级别的包装器,但(尚未)公开来自较低级别的所有关键字参数Pool

于 2016-07-09T18:27:58.273 回答
0

我想出了如何通过使用multiprocess库而不是库来做到这一点pathos。创建进程池时,您可以指定一个“初始化函数”,该函数在每个进程的开头运行。在这个初始化函数中,我创建了一个数据库引擎并将该引擎声明为进程的全局引擎。所以现在我每个进程只有一个引擎。

于 2016-06-14T18:54:45.333 回答