下面是进程之间共享状态的示例代码
from multiprocessing import Process, Value, Array
def f(n, a):
n.value = 3.1415927
for i in range(len(a)):
a[i] = -a[i]
if __name__ == '__main__':
num = Value('d', 0.0)
arr = Array('i', range(10))
p = Process(target=f, args=(num, arr))
p.start()
p.join()
print(num.value)
print(arr[:])
输出是
^{pr2}$我想用字符串元素而不是整数元素初始化一个列表。然后我想分配特定于列表的字符串元素。我的代码如下。在
from multiprocessing import Process, Value, Array
def f(a):
a = ["up", "down", "left"]
if __name__ == '__main__':
arr = Array('b', [])
p = Process(target=f, args=(arr))
p.start()
p.join()
print(arr[:])
我希望输出是
["up", "down", "left"]
但是我得到了输出
TypeError: f() missing 1 required positional argument: 'a'
[]
进程期望
args
是一个元组,而您只需传递arr
。在https://docs.python.org/2/library/multiprocessing.html
这样可以解决您的问题:
^{pr2}$您需要传递一个参数元组,您需要添加一个尾部逗号来创建一个元组:
或者显式使用元组:
^{pr2}$逗号创建元组而不是parens。在
不知道多处理会有多大帮助,但要获得所需的输出:
数组的第一个参数是我们在添加字符串时需要使用的类型
ctypes.c_char_p
,第二个参数是数组的大小,即3个元素。在相关问题 更多 >
编程相关推荐