小编Jed*_*edi的帖子

窥视 multiprocessing.queue?

我有多个工作进程从同一个multiprocessing.queue(). 每个工作进程只读取属于自己的内容,其他内容必须保持不变。所以基本上工作进程必须首先检查队列内容然后决定是否弹出一个项目。

有没有办法做到这一点multiprocessing.queue

python python-3.x

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

为什么在发布模式下短模数不正确?

短整数模数不正确.这真的很奇怪,已经花了我两天的时间.我已经缩小了有问题的代码如下(尽可能简化):

#include <stdio.h>
#include <stdlib.h>

int foo(short Width, short Height, short MSize) 
{
    short i = 0, k = 0, pos = 0;
    short j = 0;

    for(j = 1; j < Width - 1; j = j + 1)
    {/* a blank loop */}

    for(i = 1; i < Height - 1; i = i + 1) {
        for(j = 1; j < Width - 1; j = j + 1) {
            if((j % MSize) == 0) {
                k …
Run Code Online (Sandbox Code Playgroud)

c c++ modulus

6
推荐指数
1
解决办法
316
查看次数

在theano中定义函数的正确方法?

背景:

通常我会使用像'x = fmatrix()'这样的输入来定义一个theano函数,但是,在修改keras(基于theano的深度学习库)以使其与CTC成本一起工作时,我注意到一个非常奇怪的问题:如果一个输入成本函数的声明为

x = tensor.zeros(shape=[M,N], dtype='float32')
Run Code Online (Sandbox Code Playgroud)

代替

x = fmatrix()
Run Code Online (Sandbox Code Playgroud)

培训过程将更快地收敛.

一个简化的问题:

上面的整个代码都很大.所以我尝试简化问题,如下所示:说一个计算Levenshtein编辑距离的函数

import theano
from theano import tensor
from theano.ifelse import ifelse
def editdist(s, t):
    def update(x, previous_row, target):
        current_row = previous_row + 1
        current_row = tensor.set_subtensor(current_row[1:], tensor.minimum(current_row[1:], tensor.add(previous_row[:-1], tensor.neq(target,x))))
        current_row = tensor.set_subtensor(current_row[1:], tensor.minimum(current_row[1:], current_row[0:-1] + 1))
        return current_row
    source, target = ifelse(tensor.lt(s.shape[0], t.shape[0]), (t, s), (s, t))
    previous_row = tensor.arange(target.size + 1, dtype=theano.config.floatX)
    result, updates = theano.scan(fn = update, sequences=source, outputs_info=previous_row, non_sequences=target, name='editdist')
    return result[-1,-1]
Run Code Online (Sandbox Code Playgroud)

然后我定义了两个函数f1和f2,如: …

python theano keras

6
推荐指数
1
解决办法
403
查看次数

matplotlib FuncAnimation:什么时候停止?

根据 matplotlib 的文档,FuncAnimation重复调用一个函数来制作动画。

问题是,FuncAnimation()当没有更多可用的图像数据时,我应该如何告诉停止?

python matplotlib

5
推荐指数
1
解决办法
3789
查看次数

打包 numpy 数组的更好方法?

我需要用 struct.pack 打包一个 numpy 2D 数组,我正在寻找一种可以批量执行此操作的方法。我试过:

X = numpy.array([[1,2,3],[4,5,6]])
b = struct.pack('=%sf' % X.size, *X)
Run Code Online (Sandbox Code Playgroud)

但这不起作用。它提示:

struct.error: pack expected 6 items for packing (got 2)

有没有更好的方法来打包 NumPy 数组而不是遍历每个元素?

python numpy

5
推荐指数
2
解决办法
7575
查看次数

如何在函数中使用多处理?

我想在"a.py"中定义一个函数,它使用多处理进行并行化,然后将其作为库函数导入"b.py".例如,在"a.py"中:

import multiprocessing as mp, queue

def MPWorker(input, i):
    input.put(i)


def MPTest(MaxMPNum):
    jobs = []
    BatchResult = queue.Queue()
    for i in range(MaxMPNum):
        p = mp.Process(target=MPWorker, args=(BatchResult, i + 1))
        p.start()
        print("this is", i)
        jobs.append(p)
    for i in range(MaxMPNum):
        print("getting", i)
        result = BatchResult.get()
        print(result)
Run Code Online (Sandbox Code Playgroud)

然后在"b.py"中:

import a
a.MPTest(10)
Run Code Online (Sandbox Code Playgroud)

但是,它不会工作,我总会得到错误:_pickle.PicklingError:无法pickle:_thread上的属性查找锁失败.那么,是否有可能以这种方式使用python的多处理或者我错过了什么?

整个回溯,略有编辑(Python 3.x,Windows):

Traceback (most recent call last):
  File "F:/b.py", line 72, in <module>
    a.MPTest(5)
  File "F:\a.py", line 566, in MPTest
    p.start()
  File "C:\Python34\lib\multiprocessing\process.py", line 105, in start
    self._popen = self._Popen(self)
  File …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing python-3.x

2
推荐指数
1
解决办法
852
查看次数

标签 统计

python ×5

python-3.x ×2

c ×1

c++ ×1

keras ×1

matplotlib ×1

modulus ×1

multiprocessing ×1

numpy ×1

theano ×1