multiprocessing.Array的所有用法示例
时间: 2024-04-30 13:19:15 浏览: 214
Python 多核并行计算的示例代码
5星 · 资源好评率100%
下面是multiprocessing.Array的几种用法示例:
1. 创建一个共享数组,用于在多个进程之间共享数据:
```python
import multiprocessing
def worker(arr):
# 修改共享数组
for i in range(len(arr)):
arr[i] *= 2
if __name__ == '__main__':
# 创建一个共享数组,包含5个整数
arr = multiprocessing.Array('i', [1, 2, 3, 4, 5])
# 创建两个子进程,分别修改共享数组
p1 = multiprocessing.Process(target=worker, args=(arr,))
p2 = multiprocessing.Process(target=worker, args=(arr,))
p1.start()
p2.start()
p1.join()
p2.join()
# 打印修改后的共享数组
print(arr[:])
```
2. 创建一个共享字符串,用于在多个进程之间共享数据:
```python
import multiprocessing
def worker(s):
# 修改共享字符串
s.value = s.value.upper()
if __name__ == '__main__':
# 创建一个共享字符串
s = multiprocessing.Array('c', b'hello world')
# 创建一个子进程,修改共享字符串
p = multiprocessing.Process(target=worker, args=(s,))
p.start()
p.join()
# 打印修改后的共享字符串
print(s.value.decode())
```
3. 创建一个共享二进制数据,用于在多个进程之间共享数据:
```python
import multiprocessing
def worker(b):
# 修改共享二进制数据
b[0] = 255
if __name__ == '__main__':
# 创建一个共享二进制数据,长度为5个字节
b = multiprocessing.Array('B', b'\x00\x01\x02\x03\x04')
# 创建一个子进程,修改共享二进制数据
p = multiprocessing.Process(target=worker, args=(b,))
p.start()
p.join()
# 打印修改后的共享二进制数据
print(list(b))
```
4. 创建一个共享类型为ctypes.Structure的数据结构,用于在多个进程之间共享数据:
```python
import multiprocessing
import ctypes
class Point(ctypes.Structure):
_fields_ = [('x', ctypes.c_int),
('y', ctypes.c_int)]
def worker(p):
# 修改共享数据结构
p.x += 1
p.y += 1
if __name__ == '__main__':
# 创建一个共享数据结构
p = multiprocessing.Array(Point, [(1, 2)])
# 创建一个子进程,修改共享数据结构
p1 = multiprocessing.Process(target=worker, args=(p[0],))
p2 = multiprocessing.Process(target=worker, args=(p[0],))
p1.start()
p2.start()
p1.join()
p2.join()
# 打印修改后的共享数据结构
print(p[0].x, p[0].y)
```
阅读全文