大锤python日记(进程的使用)

114 阅读2分钟

进程的简单使用

一个使用进程实现多任务的示例代码。

import multiprocessing

# 定义子进程函数1
def task1():
    for i in range(5):
        print(f'Task 1, Count: {i}')
        
# 定义子进程函数2
def task2():
    for i in range(5):
        print(f'Task 2, Count: {i}')

# 创建子进程1并启动
p1 = multiprocessing.Process(target=task1)
p1.start()

# 创建子进程2并启动
p2 = multiprocessing.Process(target=task2)
p2.start()

# 主进程等待子进程结束
p1.join()
p2.join()

上面的代码创建了两个子进程,分别用于执行task1task2函数。在这个示例中,每个任务都只是简单地打印一些信息,但是根据实际需求,可以在任务中进行一些复杂的操作,例如:爬取网页、处理数据、运行机器学习算法等等。由于进程是系统资源的独立分配单位,因此不同的进程之间互不影响,可以充分利用多核CPU的优势,提高程序的运行效率。

给进程添加参数

为了给子进程添加参数,可以在创建子进程时,使用args参数传递参数。下面是一个示例代码:

import multiprocessing

# 定义子进程函数,接收一个参数
def task(name):
    for i in range(5):
        print(f'Task {name}, Count: {i}')

# 创建子进程并启动,同时传递参数
p = multiprocessing.Process(target=task, args=('A',))
p.start()

# 主进程等待子进程结束
p.join()

在上面的代码中,我们通过args参数将字符串'A'传递给了子进程函数task。在实际应用中,可以根据实际需求进行参数的传递和处理。

下面是另一个示例代码,其中包含了两个子进程,分别执行不同的任务,并且每个任务都接收一个整型参数:

import multiprocessing

# 定义子进程函数1,接收一个整型参数
def task1(n):
    for i in range(n):
        print(f'Task 1, Count: {i}')

# 定义子进程函数2,接收一个整型参数
def task2(n):
    for i in range(n):
        print(f'Task 2, Count: {i}')

# 创建子进程1并启动,传递参数为5
p1 = multiprocessing.Process(target=task1, args=(5,))  # 必须使用元组
p1.start()

# 创建子进程2并启动,传递参数为3
p2 = multiprocessing.Process(target=task2, args=(3,))
p2.start()

# 主进程等待子进程结束
p1.join()
p2.join()

在这个示例中,我们创建了两个子进程,分别执行task1task2函数,并将参数53传递给它们。在实际应用中,可以根据实际需求进行参数的传递和处理,以便完成更为复杂的任务。