python 多进程threading
时间: 2023-06-28 13:06:57 浏览: 108
深入理解python多进程编程
Python 中有两种并发处理的方式:多线程(threading)和多进程(multiprocessing)。
多线程适用于 I/O 密集型任务,如网络请求、文件读写等,因为在这种情况下线程会因为等待 I/O 操作而阻塞,此时可以切换到其他线程执行。
多进程适用于 CPU 密集型任务,如计算复杂的数学运算或图像处理等,因为在这种情况下,多进程可以充分利用多核 CPU 的优势,提高任务的执行效率。
Python 中的 threading 模块提供了多线程处理的功能,而 multiprocessing 模块则提供了多进程处理的功能。
下面是一个使用 threading 模块的简单示例:
```python
import threading
def worker():
print('I am running in thread:', threading.current_thread().name)
threads = []
for i in range(5):
t = threading.Thread(target=worker)
threads.append(t)
t.start()
for t in threads:
t.join()
```
这个示例中,我们创建了 5 个线程,并且让它们都执行 worker 函数。在 worker 函数中,我们打印了当前线程的名字。
使用 multiprocessing 模块的示例代码如下:
```python
from multiprocessing import Process
def worker():
print('I am running in process:', os.getpid())
processes = []
for i in range(5):
p = Process(target=worker)
processes.append(p)
p.start()
for p in processes:
p.join()
```
在这个示例中,我们创建了 5 个进程,并且让它们都执行 worker 函数。在 worker 函数中,我们打印了当前进程的 ID。
需要注意的是,在多进程环境下,每个进程都有自己的内存空间,因此进程之间无法直接共享变量。如果需要在多进程之间传递数据,可以使用 multiprocessing 模块提供的 Queue、Pipe 等数据结构。
阅读全文