用multiprocessing模块来创建多个进程的简单案例
时间: 2024-03-23 22:43:37 浏览: 19
好的,以下是一个简单的使用multiprocessing模块创建多个进程的案例:
```python
import multiprocessing
def worker(num):
"""每个进程要执行的任务"""
print(f"Worker {num} is working")
if __name__ == '__main__':
# 创建5个进程
for i in range(5):
process = multiprocessing.Process(target=worker, args=(i,))
process.start()
```
在这个案例中,我们定义了一个worker函数作为每个进程要执行的任务,我们使用multiprocessing.Process创建了5个进程,每个进程都会执行worker函数,并且传入不同的参数num。
这个案例只是一个简单的示例,实际上multiprocessing模块还有很多功能,比如进程间通信、进程池等等,可以根据实际需求选择使用。
相关问题
python中用multiprocessing模块来创建多个进程的简单案例
好的,以下是一个简单的使用multiprocessing模块创建多个进程的案例:
```python
import multiprocessing
def worker(num):
"""每个进程要执行的任务"""
print(f"Worker {num} is working")
if __name__ == '__main__':
# 创建5个进程
for i in range(5):
process = multiprocessing.Process(target=worker, args=(i,))
process.start()
```
在这个案例中,我们定义了一个worker函数作为每个进程要执行的任务,我们使用multiprocessing.Process创建了5个进程,每个进程都会执行worker函数,并且传入不同的参数num。
这个案例只是一个简单的示例,实际上multiprocessing模块还有很多功能,比如进程间通信、进程池等等,可以根据实际需求选择使用。
如何用multiprocessing模块来创建多个进程?
使用`multiprocessing`模块可以很方便地创建多个进程。下面是一个简单的示例代码:
```python
import multiprocessing
def worker():
"""子进程要执行的任务"""
print('子进程执行任务...')
if __name__ == '__main__':
# 创建子进程
p = multiprocessing.Process(target=worker)
# 启动子进程
p.start()
# 等待子进程结束
p.join()
print('主进程结束')
```
在这个例子中,我们首先定义了一个`worker`函数,这个函数是子进程要执行的任务。然后在`if __name__ == '__main__':`语句块中,我们创建了一个子进程`p`,并指定它要执行的任务是`worker`函数。接着,我们启动子进程`p`,等待子进程结束,最后输出`主进程结束`。
如果要创建多个子进程,我们可以使用`for`循环来创建,例如:
```python
import multiprocessing
def worker(num):
"""子进程要执行的任务"""
print(f'子进程{num}执行任务...')
if __name__ == '__main__':
# 创建3个子进程
processes = []
for i in range(3):
p = multiprocessing.Process(target=worker, args=(i,))
processes.append(p)
p.start()
# 等待所有子进程结束
for p in processes:
p.join()
print('主进程结束')
```
在这个例子中,我们定义了一个带有一个参数`num`的`worker`函数,然后使用`for`循环创建了3个子进程,并将它们添加到`processes`列表中。接着,我们启动所有子进程,等待它们结束,最后输出`主进程结束`。
需要注意的是,在Windows系统中,`multiprocessing`模块需要在`if __name__ == '__main__':`语句块中使用,否则会出现`RuntimeError`异常。这是因为Windows下的进程启动方式与Unix/Linux不同,必须将主程序作为一个模块导入到子进程中,否则会出现循环导入的问题。