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] :但也要告诉其他人你到目前为止都做了哪些尝试,即一个人到目前为止花了多少精力来分析和测试它,因此,你可能更愿意更新你的帖子,以便更好地满足社区规则和最佳实践。