小编Gig*_*ggi的帖子

Python多处理,传递对象引用包含信号量

我有这样的场景:我创建了一个包含信号量的class元素的对象.

import multiprocessing as mpr

class Element(object):
    def __init__(self):
        self.sem = mpr.Semaphore()
        self.xyz = 33

def fun( ch ):
    a = ch.recv()
    print( a[0] )
    print( a[1].xyz )
    a[1].xyz = 99
    print( a[1].xyz )


el = Element()

( pa , ch ) = mpr.Pipe()
proc = mpr.Process(target=fun , args=( ch, ) )

proc.start()
pa.send( [ "Hallo" , el ])

print( el.xyz )

proc.join()
Run Code Online (Sandbox Code Playgroud)

此代码返回此错误:

  File "/usr/lib/python2.7/multiprocessing/forking.py", line 51, in assert_spawning
    ' through inheritance' % type(self).__name__
RuntimeError: Semaphore objects should only …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing

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

枚举所有完整(标记)的二叉树

我正在搜索一个实用的算法来枚举所有完整标记的二叉树.

完整二叉树是一棵树,其中所有内部节点的度数为3,叶子的度数为1,根的度数为2.

带标签的树是一棵树,其中所有叶子都有唯一的标签.

例:

    *
    |\
    | \
    *  *
   /|  |\
  / |  | \
 T  C  D  F
Run Code Online (Sandbox Code Playgroud)

python algorithm data-structures catalan

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

在子进程中的共享 c_wchar_p 中设置字符串的值?

我有这样的情况:

主进程生成一些子进程,他们应该将结果以字符串和数字类型写入共享对象中,对于数字类型没有问题,但对于字符串,值将丢失。

import multiprocessing as mp
from ctypes import Structure, c_double, c_wchar_p, c_int

# shared obj class
class SharedObj(Structure):
    _fields_ = [('name', c_wchar_p), ('val', c_double) ]

def run_mp( values , lock , s ) :
    for i in range( s , len( values ) , 2 ):
        lock.acquire()
        values[i].name = str( i ) # write the string value in the shared obj
        values[i].val = float( i )
        print( "tmp: %d" % i )
        lock.release()

def main():
    # creating the shared …
Run Code Online (Sandbox Code Playgroud)

python ctypes shared multiprocessing

5
推荐指数
0
解决办法
4928
查看次数

numpy数组的列表索引中的多个切片

例如,Numpy数组允许索引列表

a = np.arange(1000)
l = list([1,44,66,33,90,345])
a[l] = 22
Run Code Online (Sandbox Code Playgroud)

但是,如果我们想要使用多切片索引或索引加切片,则此方法不起作用.

a = np.arange(1000)
l = list([1,44,66,33,90, slice(200,300) , slice(500,600) ])
a[l] = 22
Run Code Online (Sandbox Code Playgroud)

此代码返回一条错误消息:

IndexError: too many indices
Run Code Online (Sandbox Code Playgroud)

我的问题很简单:你知道在numpy还是scipy中是否存在使用这种索引的有效方法?

或者使用这样的索引方法有什么好方法?

不要忘记切片的使用会产生非常快的代码; 我的问题是拥有尽可能快的代码.

python arrays indexing numpy

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

使用python在配置文件中写注释

我需要在运行时通过ConfigParserPython中的库生成的配置文件中写一些注释.

我想写一个完整的描述性评论,如:

########################
# FOOBAR section 
# do something 
########################
[foobar]
bar = 1
foo = hallo
Run Code Online (Sandbox Code Playgroud)

代码应如下所示:

我在同一时刻插入注释和配置选项的位置.

import ConfigParser

config = ConfigParser.ConfigParser()

config.insert_comment("##########################") # This function is purely hypothetical 
config.insert_comment("# FOOBAR section ")
....

config.add_section('foobar')
config.set('foobar', 'bar', '1')
config.set('foobar', 'foo', 'hallo')
Run Code Online (Sandbox Code Playgroud)

python comments configparser

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