标签: multiprocessing

RPC用于多处理,设计问题

什么是跨多处理rPc的好方法.过程?

我也愿意就以下架构设计建议:流程A*10,流程B*1.每个流程A必须检查流程B是否需要查询特定项目.

所以我正在考虑为所有As实现multiprocessing.Pipe()对象,然后让B监听它们中的每一个.但是,我意识到Multiprocessing.Pipe.recv是BLOCKING.所以我真的不知道如何做到这一点.(如果我使用一个循环来检查哪一个有通过另一端发送的东西,那么循环将被阻止).

有建议让我使用twisted,但是我不知道我应该如何在twisted中执行此操作:我是否应该从每个进程A创建一个defer对每个pipe.handler然后当recv()收到它继续的东西时并完成一定的例行程序?我知道个人扭曲与多处理不能很好地混合,但是我已经对扭曲进行了一些测试,这些测试是多处理实现的子进程,我想这次它是可行的.

有什么建议?

python rpc multiprocessing

0
推荐指数
1
解决办法
1750
查看次数

将Python2.6转换为Google App Engine兼容(多处理)

我在Python中创建了一个使用多处理的小脚本.我曾想过将它作为一个cron-job在Google App Engine上运行,但遗憾的是Google App Engine不支持多处理.任何人都可以帮助我将其转换为Google App Engine兼容代码(可能使用Google App Engine任务吗?)?

from multiprocessing import Pool
import MySQLdb
import urllib;
import urllib2;

def f(email_url):
    url = "http://my-domain.com/cron.php"
    values = { "email" : email_url[0], "url" : email_url[1] }
    data = urllib.urlencode(values)
    req = urllib2.Request(url, data)
    urllib2.urlopen(req)

if __name__ == '__main__':
    p = Pool()
    emails_urls = list()
    conn = MySQLdb.connect(host = "XXX.XXX.XXX.XXX", user = "USERNAME",
                           passwd = "PASSWORD", db = "MY-DATABASE")
    cursor = conn.cursor()
    cursor.execute ("SELECT email, url FROM data")
    rows = cursor.fetchall()
    for row …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine multiprocessing

0
推荐指数
1
解决办法
234
查看次数

编程逻辑 - 在线程之间拆分任务

假设你想要5个线程同时处理数据.还假设您有89个要处理的任务.

你知道89/5 = 17,其余的是4.分离任务的最好方法是让4个(余数)线程每个处理18(17 + 1)个任务,然后有1个(#个线程 - 其余)线程处理17.

这将消除余数.只是为了验证:

Thread 1: Tasks  1-18  (18 tasks)
Thread 2: Tasks 19-36  (18 tasks)
Thread 3: Tasks 37-54  (18 tasks)
Thread 4: Tasks 55-72  (18 tasks)
Thread 5: Tasks 73-89  (17 tasks)
Run Code Online (Sandbox Code Playgroud)

完成了总共89项任务.

我需要一种方法来获得每个线程的开始和结束范围数学/可编程性; 以下内容应该打印出我上面列出的确切内容:

$NumTasks = 89
$NumThreads = 5
$Remainder = $NumTasks % $NumThreads 
$DefaultNumTasksAssigned = floor($NumTasks / $NumThreads)

For $i = 1 To $NumThreads
    if $i <= $Remainder Then
        $NumTasksAssigned = $DefaultNumTasksAssigned + 1
    else
        $NumTasksAssigned = $DefaultNumTasksAssigned
    endif
    $Start …
Run Code Online (Sandbox Code Playgroud)

language-agnostic math programming-languages multiprocessing

0
推荐指数
1
解决办法
277
查看次数

使用并行线程提高Python执行速度

假设我有这个示例代码:

x = foo1(something1)
y = foo2(something2)

z = max(x, y)
Run Code Online (Sandbox Code Playgroud)

我想通过使用线程来改善此代码的执行时间(希望它有帮助不是吗?).我想让事情尽可能简单,所以基本上我想做的是创建两个同时工作的线程,分别计算foo1foo2.

我正在阅读有关线程的内容,但我发现它有点棘手,我不能因为做这么简单的事情而浪费太多时间.

python performance multithreading multiprocessing gil

0
推荐指数
1
解决办法
3048
查看次数

在Windows上通过Perl进行多处理

我写了这个应该打开几个进程的代码,问题是它在linux上运行得很好但是当我在windows上执行它时它只创建一个进程!! 这可以用perl在windows上创建多进程吗?

$j = ARGV[0];
for($i=1; $i<=$j; $i++){
system("perl example.pl word.txt.$i &");
}
Run Code Online (Sandbox Code Playgroud)

perl multiprocessing

0
推荐指数
1
解决办法
658
查看次数

即使条件满足,代码也不会进入while循环

可能重复:
"while(!feof(file))"总是错误的

我有一个与while循环相关的奇怪问题.我有一个函数,它在process(print_file())的父元素的末尾被调用,并且它不接受真正的条件继续.这是我简单的多进程代码,如下所示.

#include <stdio.h>     /* basic I/O routines.   */
#include <stdlib.h>
#include <unistd.h>    /* define fork(), etc.   */
#include <sys/types.h> /* define pid_t, etc.    */
#include <sys/wait.h>  /* define wait(), etc.   */
#include <signal.h>    /* define signal(), etc. */
#include <pthread.h>
#include <time.h>
#include <ctype.h>

void print_file(char* [], char* []);
void child_process(int,int);
void parent_process();
int counter=0;

int main(int argc, char* argv[]) {

    counter = atoi(argv[1]);
    int i,k;
    pid_t child_pid;
    int child_status;
    char* array[counter];
    srand ( time(NULL) ); …
Run Code Online (Sandbox Code Playgroud)

c printf multiprocessing while-loop

0
推荐指数
1
解决办法
951
查看次数

C#中的并行编程如何分离数据

在学校,我们上周开始进行多线程处理,现在我们已经进行了多处理,我有点迷失了,所以我将向你解释这个问题.对于练习,我们必须制作一个模拟10000个游戏的赌场游戏模拟器,以便我们知道赌场赢得游戏的频率.所以我编写了模拟器,我有5种方法来运行游戏:

static void game(Croupier croupier)
{
    croupier.createNewCardDeck();
    croupier.shuffleCards();
    croupier.giveCardsToPlayers();
    croupier.countPlayerPoints();
    croupier.displayResults();
}
Run Code Online (Sandbox Code Playgroud)

如果我在10000次迭代的经典for循环中调用游戏,则运行正常,大约需要2秒,并且银行赢得50%的次数.

如果我使用Parallel.For,它会在shuffleCards上崩溃,因为(我认为)多个进程正在尝试同时编辑同一包卡.

我的第一个想法是将Mutex放在我的shuffleCards上,但是当使用并行编程来提高速度时,它会减慢模拟速度.所以我想把不同进程的数据分开(所以我不是10000次迭代,而是在4个进程上进行2500次,每个循环都有自己的副主持人,玩家,卡等...)

您认为解决此问题的最佳方法是什么?您是否有任何简单的教程解释如何处理使用相同数据的并行工作?你会选择哪种解决方案?谢谢

编辑:ShuffleCard方法

        List<Card> randomList = new List<Card>();

        Random r = new Random();
        int randomIndex = 0;

        while (_cards.Count > 0)
        {
            randomIndex = r.Next(0, _cards.Count); //Choose a random object in the list
            randomList.Add(_cards[randomIndex]); //add it to the new, random list
            _cards.RemoveAt(randomIndex); //remove to avoid duplicates
        }
        return randomList;
Run Code Online (Sandbox Code Playgroud)

所以是_cards是croupier的私有财产(调用this._cards = shuffleCards(),每个进程都有相同的卡列表

c# parallel-processing simulator multiprocessing

0
推荐指数
1
解决办法
494
查看次数

python NameError:未定义全局名称'multiprocessing'

我试图将我的线程代码转换为多处理代码.但它给了我错误

    Name Error: global name 'multiprocessing' is not defined
Run Code Online (Sandbox Code Playgroud)

安装了多处理,我将其导入

    from multiprocessing import *
Run Code Online (Sandbox Code Playgroud)

python multiprocessing nameerror

0
推荐指数
1
解决办法
5078
查看次数

如何让这个脚本更快一点?

for i in xrange(1, 600851475141):
  if 600851475141 % i == 0:
    print i
Run Code Online (Sandbox Code Playgroud)

这花费了太多时间.有可能让它更快吗?

python multiprocessing

0
推荐指数
1
解决办法
97
查看次数

编程理论Gods Strike:Python 2.x中的target = foo是什么?

通常我一直在浏览这个问答网站,使用多线程和处理的答案告诉我使用这样的格式:

(target=foo, args=(bar, baz))
Run Code Online (Sandbox Code Playgroud)

它最常用于多处理多线程(至少我的知识有限.)

我的问题是,什么target意思,有人可以解释它是如何使用的?

我无法在文档或其他地方找到好的解释.

python multithreading multiprocessing

0
推荐指数
1
解决办法
162
查看次数