Parallel processing 在python3中的线程内运行多个并行作业
我有两个函数Parallel processing 在python3中的线程内运行多个并行作业,parallel-processing,python-3.6,python-multithreading,joblib,Parallel Processing,Python 3.6,Python Multithreading,Joblib,我有两个函数func1()和func2(),它们相互独立,可以在两个线程中运行。我正在使用python3中的threading库来运行这两个线程。但是在func1()内部,我也使用joblib为循环并行运行。因此,使用线程和joblib会发出以下警告- /usr/local/lib/python3.6/dist-packages/joblb/parallel.py:547:UserWarning:multi-processing-backed-parallel循环不能嵌套在线程下面,设置n_-j
func1()
和func2()
,它们相互独立,可以在两个线程中运行。我正在使用python3
中的threading
库来运行这两个线程。但是在func1()
内部,我也使用joblib
为循环并行运行。因此,使用线程和joblib会发出以下警告-
/usr/local/lib/python3.6/dist-packages/joblb/parallel.py:547:UserWarning:multi-processing-backed-parallel循环不能嵌套在线程下面,设置n_-jobs=1
然后,func1()
中的for循环按顺序运行
以下是代码片段的示例:
from joblib import Parallel, delayed
import threading
from math import sqrt
class MyThread(threading.Thread):
def __init__(self, sample, type):
threading.Thread.__init__(self)
self.type = type
self.sample = sample
def run(self):
if self.type=='func1':
self.sample.func1()
else:
self.sample.func2()
class Sample:
def func1(self):
print('this function runs for loop in parallel.')
ans = Parallel(n_jobs=8)(delayed(sqrt)(i**2) for i in range(1000))
def func2(self):
print('this function runs sequentially.')
def try(self):
thread1 = MyThread(self, 'func1')
thread2 = MyThread(self, 'func2')
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print('Done...')
if __name__ == '__main__':
s = Sample()
s.try()
我怎样才能解决这个问题?或者,如果是joblib问题,是否有其他库可以替代joblib?向我们展示您编写的一些代码,然后我们就可以解决您的问题欢迎使用StackOverflow。社区规则规定,一个高质量的问题应始终解释[a]:一个人的目标(定义一个人认为是可接受的解决方案),最好以MCVE的形式-**这种代码+数据的最小完整可验证示例,可以运行并实时演示正在审查的问题。[B] :但也要告诉其他人你到目前为止都做了哪些尝试,即一个人到目前为止花了多少精力来分析和测试它,因此,你可能更愿意更新你的帖子,以便更好地满足社区规则和最佳实践。