【问题标题】:Collecting IronPython Parallel Loop results收集 IronPython 并行循环结果
【发布时间】:2019-04-27 04:58:51
【问题描述】:

我正在尝试从 IronPython 中的 tasks 方法中获取结果,类似于 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,但它正在递增,我需要返回一个数组。

【问题讨论】:

    标签: python .net task-parallel-library ironpython parallel.foreach


    【解决方案1】:

    Parallel.ForEach 是一个多处理操作,但鉴于您期望操作的结果,您必须使用共享结果变量(例如某种concurrent collection)或使用parallel LINQ projection operation

    接近您的样本的方法可能如下所示:

    # 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2013-05-06
      • 1970-01-01
      • 2015-01-28
      • 2020-12-22
      相关资源
      最近更新 更多