我在python中执行一些计算开销很大的任务,并找到了用于并行化的线程模块。我有一个函数,它进行计算并返回一个ndarray作为结果。现在我想知道如何并行化我的函数并从每个线程返回计算的数组。在
下面的例子通过光函数和计算得到了很好的简化。在
import numpy as np
def calculate_result(input):
a=np.linspace(1.0, 1000.0, num=10000) # just an example
result = input*a
return(result)
input =[1,2,3,4]
for i in range(0,len(input(i))):
t.Thread(target=calculate_result, args=(input))
t. start()
#Here I want to receive the return value from the thread
我正在寻找一种方法来从线程/函数中获取每个线程的返回值,因为在我的任务中,每个线程计算的值不同。在
我发现了另一个问题(how to get the return value from a thread in python?),其中有人正在寻找类似的问题(没有ndarrays),它是用ThreadPool和async处理的。。。在
谢谢你的回答! 由于您的帮助,我现在正在寻找一种方法来解决我的问题与多处理模块。为了让你更好地理解我的工作,请看我下面的解释。在
说明:
我的“input_data”是一个包含282240个uint32类型元素的ndarray
在“calculation_function()”中,我使用for循环进行计算 每12位生成一个结果并将其放入“输出数据”
因为这很慢,所以我把输入的数据分成4或8 parts并在calculation\u function()中计算每个part。在
现在我正在寻找一种方法,如何并行化4或8函数 电话
数据的顺序是基本的,因为数据是在图像和 每个像素必须在正确的位置。So函数调用1 计算第一个和最后一个函数调用的最后一个像素 图像。在
计算工作正常,图像可以完全重建 从我的算法,但我需要并行化,以加快时间 关键方面。在
摘要: 一个输入数据被分成4个或8个部分。每个部分的值为70560或35280 uint32。我从每12位计算一个像素和4或8个函数调用。每个函数返回一个带有188160或94080像素的ndarray。所有返回值都将放在一行中,并重塑为图像。在
allready的工作原理: 计算已经准备好了,我可以重建我的图像
问题: 函数调用是连续的,在一行中完成,但是每次图像重建都非常慢
主要目标: 通过并行化函数调用来加速函数调用。在
代码:
^{pr2}$请不要在意我的初学者编程风格:) 只是在寻找一个解决方案,如何将函数调用与多处理模块并行化,并返回返回ndarray。在
非常感谢你的帮助!在
kar的答案是可行的,但是请记住,他使用的是.dummy模块,这可能会受到GIL的限制。以下是关于它的更多信息: multiprocessing.dummy in Python is not utilising 100% cpu
您可以使用多处理模块中的进程池
相关问题 更多 >
编程相关推荐