开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第19天,点击查看活动详情
在了解Python的多任务之前,我们先看看什么是并发和并行。虽然这两个看着比较相似,但还是有区别的。并发是一段时间内交替执行任务,操作系统轮流让程序交替执行。而并行是多个软件一起执行,并会有被打断的情况,一般存在于多核cpu中。
在Python中,我们可以通过多进程来实现多任务的执行,进程之间是互不干扰的。
多进程
下篇我们将从一个例子入手看看Python的多进程是怎么使用的。
# 1. 导入进程包
import multiprocessing
import time
# 唱
def sing():
for i in range(5):
print("唱...")
time.sleep(0.2)
# 跳
def dance():
for i in range(5):
print("跳...")
time.sleep(0.2)
dance_process = multiprocessing.Process(target=dance)
sing_process = multiprocessing.Process(target=sing)
dance_process.start()
sing_process.start()
代码详解
这个代码具体是什么功能呢,我们逐一分析一下,我想你就明白了。
第一步,我们引入进程包,使用多进程来编程就需要我们先导入多进程包,这里除了导入进程包之外,还导入了time包,这是在阻塞当前进程会用到的包。
第二步,我们定义唱和跳的函数,都是循环五次,打印唱跳然后进程睡眠200毫秒,rap和篮球的函数我就不定义了哈,都是一样的。
第三步,创建唱和跳的子进程,就是使用multiprocessing.Process()函数来进行创建,后面target指的是执行的任务的名称,也就是前面定义的sing和dance函数,除此以外,我们还可以通过name参数来设置进程的名字,不设置的话就是Process-1,Process-2。。。,可以通过group参数来划分组
第四步,启动创建的这两个子进程
这样整体就完成,代码的功能我们也可以看出来了了,唱和跳方法被两个进程调用,输出相应的值,具体这两个进程哪个先调用将由操作系统来决定。
小结
这篇文章我们讲了Python多进程的使用,具体步骤就是先引入包,然后创建子进程,这里的进程的操作和Java中的线程操作有点类似。