我有这样的场景:我创建了一个包含信号量的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) 我正在搜索一个实用的算法来枚举所有完整标记的二叉树.
完整二叉树是一棵树,其中所有内部节点的度数为3,叶子的度数为1,根的度数为2.
带标签的树是一棵树,其中所有叶子都有唯一的标签.
例:
*
|\
| \
* *
/| |\
/ | | \
T C D F
Run Code Online (Sandbox Code Playgroud) 我有这样的情况:
主进程生成一些子进程,他们应该将结果以字符串和数字类型写入共享对象中,对于数字类型没有问题,但对于字符串,值将丢失。
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) 例如,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中是否存在使用这种索引的有效方法?
或者使用这样的索引方法有什么好方法?
不要忘记切片的使用会产生非常快的代码; 我的问题是拥有尽可能快的代码.
我需要在运行时通过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)