标签: parallel-processing

同步静态方法

如果我有一个包含许多同步方法的类,其中一些是静态的,而其中一些不是:

public class A {
    public static void synchronized f1() {}
    public void synchronized f2() {}
}  
Run Code Online (Sandbox Code Playgroud)

当一个线程调用f1()和第二个调用f2()时会发生什么,这意味着它们如何彼此同步.如果一个胎面调用f1()和f1()调用f2()会发生什么?

java parallel-processing synchronized

4
推荐指数
1
解决办法
696
查看次数

Haskell并行性能

任务是使用parMap或parListChunk或更好的方法加速求和.使用并行代码实际上运行速度较慢.

编辑: Facepalm ..我忽略了如何正确执行应用程序.

不要忘记添加核心

./myHaskellApp paramaters +RTS -N4 -sstderr
Run Code Online (Sandbox Code Playgroud)

其中N 4是核心数.

parallel-processing performance haskell functional-programming

4
推荐指数
1
解决办法
830
查看次数

我应该禁用HyperThreading来运行并行仿真吗?

我的电脑有一个四核i7处理器.我正在研究科学模拟的并行化.超线程如何影响并行性能?我知道我不应该使用超过4个工作流程来获得下降表现.但是我应该禁用超线程吗?它对并行性能有影响吗?

parallel-processing optimization performance hyperthreading

4
推荐指数
1
解决办法
4494
查看次数

并行运行许多函数,并将所有结果收集到列表中

我有一个CPU密集型功能:

def entity_intersections(ent, collidable):
    intersections = []

    for line1, line2 in product(ent.shape, collidable.shape):

        pair_intersections = find_intersections(line1 + ent.position, ent.velocity, ent.acceleration, line2 + collidable.position, collidable.velocity, collidable.acceleration, ent, collidable)
        intersections.extend(pair_intersections)

    return intersections
Run Code Online (Sandbox Code Playgroud)

我希望让所有调用find_intersections并行运行,以便它们执行得更快,同时仍然将所有结果收集在一起(一旦所有执行完成).什么库允许我这样做,因为这find_intersections是一个纯函数

将非常感谢如何生成这些并行执行以及将结果收集在一起的示例.

python parallel-processing python-3.x

4
推荐指数
1
解决办法
1221
查看次数

Parallel.For在Python中

是否有类似于C#的优秀Parallel.For在Python中?我只是想做一个类似的计算

[simu(c) for c in clusterSizes]
Run Code Online (Sandbox Code Playgroud)

在平行下.存档的最简单方法是什么?

PS:我尝试过joblib,但在我的情况下,它只是启动,启动和启动进程,直到我必须重新启动我的机器.

python windows parallel-processing

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

我可以使用parallel.ForEach来调用不同的函数吗?

我有一个运行的foreach循环.我正在研究并行功能.是否可以转换以下代码以使用并行编程?

int result ;
int counter;
foreach(DataRow dr in ds.Tables[0].Rows) {
    switch(dr["Gender"].ToString()) {
        case "Male":
            result = functionMale(dr["Gender"].ToString());
            counter += result;
            break;
        case "Female":
            result = functionFemale(dr["Gender"].ToString());
            counter += result;
            break;
        default:
            result = functionUnkown(dr["Gender"].ToString());
            counter += result;
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

根据我的观察,我到目前为止只有以下内容.

Parallel.ForEach(ds.Tables[0].AsEnumerable(), dr => {
    var result = functionMale(dr["Gender"].ToString();
});
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

.net c# asp.net parallel-processing multithreading

4
推荐指数
1
解决办法
1695
查看次数

大括号内的大括号(大括号) - gnu parallel/xargs/find

使用GNU parallel(http://www.gnu.org/software/parallel/)时遇到括号(大括号)问题

我有四个文件列表:

file1.txt.super
file2.txt.super
file3.txt.super
file4.txt.super
Run Code Online (Sandbox Code Playgroud)

如果我发出: ls * | parallel "mkdir ./{.}"

我得到了四个目录:

file1.txt
file2.txt
file3.txt
file4.txt
Run Code Online (Sandbox Code Playgroud)

我的问题是,我怎样才能简单地返回四个目录:

file1
file2
file3
file4
Run Code Online (Sandbox Code Playgroud)

我已阅读http://www.linuxjournal.com/article/8919但无法使用gnu parallel实现这些正则表达式.我想我在这里遗漏了一些东西.此外,非常感谢任何具有更复杂的正则表达式的示例.

regex parallel-processing bash shell curly-braces

4
推荐指数
1
解决办法
2109
查看次数

使用Parallel.Invoke执行带参数的方法

我已经定义了一个数组,Action<string, int, double, double>并希望使用它们并行执行它们Parallel.Invoke().有什么方法可以将我的Action转换为无参数动作,这样我可以做到这一点还是有另一种方式?

parallel-processing action c#-4.0

4
推荐指数
1
解决办法
6090
查看次数

多处理器Boost :: Thread?所有线程都在一个处理器上运行

我有一个令人尴尬的并行问题,我想在多个处理器上执行.我本以为boost::thread会自动将新线程发送到新处理器,但所有这些线程都在与父进程相同的核心上执行.是否可以让每个线程在不同的处理器上运行,还是需要像MPI这样的东西?

我怀疑这boost::thread不是一个多处理器工具,我要求它做一些不是为它设计的东西.

编辑:我的问题归结为:为什么所有线程都在一个处理器上执行?有没有办法让boost::thread线程发送到不同的处理器?

这是我的代码的相关示例:

size_t lim=1000;
std::deque<int> vals(lim);
std::deque<boost::thread *> threads;
int i=0; 
std::deque<int>::iterator it = vals.begin();
for (; it!=sigma.end(); it++, i++) {
  threads.push_back(new boost::thread(doWork, it, i));
  while (threads.size() >= maxConcurrentThreads) {
    threads.front()->join();
    delete threads.front();
    threads.pop_front();
  }
}
while(threads.size()) {
  threads.front()->join();
  threads.pop_front();
}
Run Code Online (Sandbox Code Playgroud)

应该清楚,doWork使用参数进行一些计算i并将结果存储在中vals.我的想法是设置maxConncurrentThreads为等于可用核心数,然后每个线程将使用空闲的核心.我只需要有人确认boost::thread不能以这种方式工作.

(我猜想有一种更好的方法来限制并发线程的数量而不是使用队列;也可以随意骂我.)


这是doWork功能:

void doWork(std::deque<int>::iterator it, int i) {
  int ret=0;
  int size = 1000; // originally 1000, later …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing multithreading boost boost-thread

4
推荐指数
1
解决办法
3225
查看次数

如何使用PHP实现此场景?

我正在编写一个使用C2DM的android应用程序.当用户向服务器发送一些消息时,服务器回复发送者并将该消息转发给网络中的一组其他用户.

问题是,对发件人的回复会延迟,直到邮件转发给所有其他人.这花费了很多时间.我希望首先将回复发送回发件人,然后执行转发过程.我怎样才能做到这一点......?如果我可以使用并行处理,我怎么能用PHP ...?任何帮助将非常感谢:)

我用过这样的东西,

print(json_encode("Inserted Successfully"));//."   ".count($tags)));

while($row = mysql_fetch_row($result))
{
     $id = $row[0];
     sendMessageToUserID($id,"New Question !!",$ques_id,"yyyy");
}
Run Code Online (Sandbox Code Playgroud)

但是,这里"成功插入"不会发送给发送者,直到执行while循环.

php parallel-processing

4
推荐指数
1
解决办法
1309
查看次数