假设我有50个进程,并且我使用它们来操作(例如)20000个不同的输入值。 (我使用的是pathos库,我认为它与Python中的多处理库类似。)
thread_pool = pathos.multiprocessing.ProcessingPool(threads=50)
thread_pool.map(function, inputs)
我想为每个进程创建一个SQLAlchemy数据库引擎(但我没有资源为每个输入值创建一个)。然后,我希望使用该进程处理的所有输入都使用相同的数据库引擎。
我该怎么做?
答案 0 :(得分:1)
我是pathos
和multiprocess
的作者。事实证明,multiprocess
实际上是pathos
正在使用的内容,但也许情况并非如此明显。您可以从pathos
:
>>> import pathos
>>> pathos.pools._ProcessPool
<class 'multiprocess.pool.Pool'>
以上是直接来自Pool
的原始multiprocess
,而pathos.pools.ProcessPool
是具有一些附加功能的更高级别的包装器,但是(尚未)公开所有关键字参数较低级Pool
。
答案 1 :(得分:0)
我想通过使用multiprocess
库而不是pathos
库来解决这个问题。创建进程池时,可以指定&#34;初始化函数&#34;,它在每个进程的开头运行。在这个初始化函数中,我创建了一个数据库引擎,并将该引擎声明为该进程的全局引擎。所以现在每个进程只有一个引擎。