我正在尝试从IronPython中的task方法获得结果,类似于results.get
与CPython multiprocessing.Queue
的工作方式
from System.Threading.Tasks import *
def testThread(dataPnt,constData):
return dataPnt
def main():
dataToSplit = range(5)
constData = 10
threadResult = Parallel.ForEach(dataToSplit, lambda dataPnt: testThread(dataPnt,constData))
print(threadResult)
main()
这时threadResult是System.Threading.Tasks.ParallelLoopResult
,但是我找不到任何合适的文档。最接近的是this post,但它正在递增,我需要返回一个数组。
答案 0 :(得分:1)
Parallel.ForEach是一个多处理操作,但是鉴于您希望从操作中得到结果,您将不得不使用共享结果变量(例如某种concurrent collection)或使用{{ 3}}。
接近样本的方法如下:
# get LINQ dependencies
import clr
clr.AddReference("System.Core")
import System
clr.ImportExtensions(System.Linq)
from System.Threading.Tasks import *
def testThread(dataPnt,constData):
print dataPnt
return dataPnt
def main():
dataToSplit = range(5)
constData = 10
threadResult = dataToSplit.AsParallel().Select(lambda dataPnt: testThread(dataPnt,constData)).ToList()
print(threadResult)
main()