Python multiprocessing使用样例
时间: 2023-11-05 10:03:12 浏览: 114
下面是一个简单的 Python multiprocessing 的样例:
```python
import multiprocessing
def worker(num):
"""worker function"""
print('Worker:', num)
return
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
```
这个样例创建了5个进程,每个进程都调用 `worker` 函数,并且传入一个整数参数。
在这个样例中,我们使用了 `multiprocessing.Process` 类来创建一个进程对象,然后调用 `start()` 方法来启动进程。`args` 参数是一个元组,它包含传递给 `worker` 函数的参数。在 `worker` 函数内部,我们打印出了进程的编号。
需要注意的是,在 Windows 系统中,必须将代码放在 `if __name__ == '__main__':` 语句块中,否则会出现奇怪的问题。这是因为 Windows 中的多进程模块使用了不同的机制来启动子进程。在 Linux 系统中,这个限制不是必需的。
相关问题
python multiprocessing样例
下面是一个简单的Python multiprocessing示例,其中我们使用了`Process`类来创建子进程,并使用`Queue`类来在父进程和子进程之间传递数据:
```python
import multiprocessing
def worker(queue):
"""子进程函数"""
print("子进程开始执行")
data = queue.get() # 从队列中获取数据
print(f"子进程接收到的数据为:{data}")
queue.put("hello from child") # 向队列中加入数据
if __name__ == "__main__":
print("父进程开始执行")
queue = multiprocessing.Queue() # 创建队列对象
process = multiprocessing.Process(target=worker, args=(queue,)) # 创建子进程对象
process.start() # 启动子进程
queue.put("hello from parent") # 向队列中加入数据
data = queue.get() # 从队列中获取数据
print(f"父进程接收到的数据为:{data}")
process.join() # 等待子进程结束
```
在上面的示例中,我们首先创建了一个`Queue`对象,然后使用`Process`类创建了一个子进程。子进程函数`worker`从队列中获取数据,打印出来,并向队列中加入一条数据。主进程先向队列中加入一条数据,然后从队列中获取数据并打印出来。最后,我们使用`join`方法等待子进程结束。
python multiprocessing多线程样例
下面是一个使用 `multiprocessing` 模块实现多线程的 Python 样例:
```python
import multiprocessing
def worker(num):
"""定义每个线程要执行的任务"""
print('Worker %d is running' % num)
if __name__ == '__main__':
# 创建多个进程
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
p.start()
```
在这个样例中,我们首先定义了一个 `worker` 函数,这个函数代表了每个线程要执行的任务。然后在 `main` 函数中,我们创建了 5 个进程,并将它们分别赋予一个编号。每个进程都会调用 `worker` 函数,并传递自己的编号作为参数。
当我们运行这个程序时,我们会看到类似下面的输出:
```
Worker 0 is running
Worker 1 is running
Worker 2 is running
Worker 3 is running
Worker 4 is running
```
可以看到,这个程序成功地创建了 5 个进程,并在每个进程中执行了 `worker` 函数。
阅读全文