小编Pui*_*ibo的帖子

Process.join()和队列不适用于大数字

我试图拆分循环即

N = 1000000
for i in xrange(N):
    #do something
Run Code Online (Sandbox Code Playgroud)

使用multiprocessing.Process并且它适用于N的小值.当我使用更大的N值时会出现问题.在p.join()之前或期间发生奇怪的事情并且程序没有响应.如果我把print i,而不是q.put(i)放在函数f的定义中,一切都运行良好.

我将不胜感激任何帮助.这是代码.

from multiprocessing import Process, Queue

def f(q,nMin, nMax): # function for multiprocessing
    for i in xrange(nMin,nMax):
        q.put(i)

if __name__ == '__main__':

    nEntries = 1000000

    nCpu = 10
    nEventsPerCpu = nEntries/nCpu
    processes = []

    q = Queue()

    for i in xrange(nCpu):
        processes.append( Process( target=f, args=(q,i*nEventsPerCpu,(i+1)*nEventsPerCpu) ) )

    for p in processes:
        p.start()

    for p in processes:
        p.join()

    print q.qsize()
Run Code Online (Sandbox Code Playgroud)

python python-2.7 python-multiprocessing

8
推荐指数
1
解决办法
5136
查看次数

全局变量和 addEventlistener

问题是:我想要全局变量 X,它采用 alpha 值。对于下面的代码,控制台中 X 的值始终为零。

var X = 0; 

window.addEventListener("deviceorientation", handleOrientation, true);

function handleOrientation(event) {
    var alpha = Math.round(event.alpha);  
    X = alpha;
}

console.log(X);
Run Code Online (Sandbox Code Playgroud)

编辑:我想做类似的事情

var X = 0; 

window.addEventListener("deviceorientation", handleOrientation, true);

function handleOrientation(event) {
    var alpha = Math.round(event.alpha);  
    X = alpha;
}

function f(x){ return x*x }

f(X);
Run Code Online (Sandbox Code Playgroud)

现在我明白我必须将 f(X) 放在函数 handleOrientation 中。我想没有其他办法了吗?

javascript global-variables addeventlistener

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