标签: parallel-processing

在多个进程之间共享结果队列

multiprocessing模块的文档显示了如何将队列传递给以multiprocessing.Process.开头的进程.但是,如何与异步工作进程共享队列apply_async?我不需要动态加入或其他任何东西,只是工人(反复)将结果报告回基地的一种方式.

import multiprocessing
def worker(name, que):
    que.put("%d is done" % name)

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    q = multiprocessing.Queue()
    workers = pool.apply_async(worker, (33, q))
Run Code Online (Sandbox Code Playgroud)

这失败了: RuntimeError: Queue objects should only be shared between processes through inheritance.我理解这意味着什么,我理解继承的建议,而不是要求pickle/unpickling(以及所有特殊的Windows限制).但如何我传递队列中一个可行的办法?我找不到一个例子,我尝试了几种以各种方式失败的替代品.请帮忙?

python queue parallel-processing multiprocessing python-multiprocessing

77
推荐指数
2
解决办法
4万
查看次数

是否(或将)C#包含副作用验证功能?

我知道C#获得了很多并行编程支持,但是AFAIK仍然没有副作用验证的构造,对吧?

我认为现在C#已经布局了,现在更棘手了.但是有计划将其纳入其中吗?或者F#是唯一具有副作用验证结构的.NET语言吗?

.net c# parallel-processing f# immutability

72
推荐指数
3
解决办法
1万
查看次数

F#在科学计算中的表现

我很好奇F#性能与C++性能的对比情况如何?我问了一个关于Java的类似问题,我得到的印象是Java不适合重编码.

我已经读过F#应该具有更高的可扩展性和更高的性能,但这种真实性能与C++相比如何呢?关于当前实施的具体问题是:

  • 浮点数有多好?
  • 它是否允许矢量指令
  • 对优化编译器有多友好?
  • 它有多大的记忆足迹?它是否允许对内存位置进行细粒度控制?
  • 它是否具有分布式内存处理器的容量,例如Cray?
  • 在涉及大量处理的计算科学中,它可能具有哪些特征?
  • 是否有使用它的实际科学计算实现?

谢谢

c++ parallel-processing performance f# scientific-computing

71
推荐指数
6
解决办法
2万
查看次数

Java的"Parallel.For"?

我想知道是否有一个Parallel.For相当于Java的.net版本?

如果有人可以提供一个例子吗?谢谢!

java parallel-processing

71
推荐指数
5
解决办法
4万
查看次数

在Bash中并行wget

我从一个网站得到一堆相对较小的页面,并想知道我是否可以在Bash中以某种方式并行执行.目前我的代码看起来像这样,但执行需要一段时间(我认为减慢我的速度是连接中的延迟).

for i in {1..42}
do
    wget "https://www.example.com/page$i.html"
done
Run Code Online (Sandbox Code Playgroud)

我听说过使用xargs,但我对此一无所知,而且手册页非常混乱.有任何想法吗?甚至可以并行执行此操作吗?还有另一种方法可以攻击这个吗?

parallel-processing bash wget

70
推荐指数
4
解决办法
5万
查看次数

使用xargs并行运行程序

我目前有当前的脚本.

#!/bin/bash
# script.sh

for i in {0..99}; do
   script-to-run.sh input/ output/ $i
done
Run Code Online (Sandbox Code Playgroud)

我希望使用xargs并行运行它.我试过了

script.sh | xargs -P8
Run Code Online (Sandbox Code Playgroud)

但这样做只在当时执行一次.也没有运气-n8.添加&在脚本for循环中执行的行的末尾将尝试一次运行脚本99次.如何在当时仅执行8次循环,最多100次.

parallel-processing bash xargs

70
推荐指数
4
解决办法
6万
查看次数

Parallel.ForEach添加到列表

我正在尝试运行连接到远程站点(通过网络)的多个功能并返回通用列表.但我想同时运行它们.

例如:

public static List<SearchResult> Search(string title)
{
    //Initialize a new temp list to hold all search results
    List<SearchResult> results = new List<SearchResult>();

    //Loop all providers simultaneously
    Parallel.ForEach(Providers, currentProvider =>
    {
        List<SearchResult> tmpResults = currentProvider.SearchTitle((title));

        //Add results from current provider
        results.AddRange(tmpResults);
    });

    //Return all combined results
    return results;
}
Run Code Online (Sandbox Code Playgroud)

正如我所看到的,"结果"的多次插入可能同时发生......这可能会导致我的应用程序崩溃.

我怎么能避免这个?

c# parallel-processing locking list

69
推荐指数
5
解决办法
7万
查看次数

为什么OpenMP不允许使用!=运算符?

我试图编译以下代码:

#pragma omp parallel shared (j)
{
   #pragma omp for schedule(dynamic)
   for(i = 0; i != j; i++)
   {
    // do something
   }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:错误:控制谓词无效.

我检查了openMP 参考指南,它说对于它的并行"仅"允许以下运算符之一:<=>> =.

我不明白为什么不允许i != j.我可以理解它是否是静态调度,因为openMP需要预先计算分配给每个线程的迭代次数.但我无法理解为什么在这种情况下这种限制为例.有线索吗?


编辑:即使我做for(i = 0; i != 100; i++),虽然我可以把"<"或"<=".

c c++ parallel-processing multithreading openmp

69
推荐指数
3
解决办法
5515
查看次数

68
推荐指数
4
解决办法
5万
查看次数

在C#中并行运行三个方法的最简单方法

我有三种方法可以做一些数字运算,如下所示

results.LeftFront.CalcAi();  
results.RightFront.CalcAi();  
results.RearSuspension.CalcAi(geom, vehDef.Geometry.LTa.TaStiffness, vehDef.Geometry.RTa.TaStiffness);
Run Code Online (Sandbox Code Playgroud)

每个函数彼此独立,并且可以并行计算而没有死锁.
在没有包含方法完成之前,并行计算这些内容的最简单方法是什么?

c# parallel-processing task-parallel-library

66
推荐指数
2
解决办法
8万
查看次数