3.python学习笔记:python下的多进程与多线程(一)

这篇博客介绍了Python中的多进程和多线程概念。通过os.fork()创建进程分支,展示了进程间的父子关系。同时,文章讨论了线程的使用,强调了线程的性能优势、简单性和资源共享,但需要注意同步问题。文中使用thread模块编写了多线程示例,包括线程锁的运用,以实现线程间的同步。下一部分将介绍更高级的threading模块。
摘要由CSDN通过智能技术生成

python下的多进程与多线程


python多进程

关于多进程与多线程的概念第一个接触是在学习C语言的时候,当时借助stevens的《UNIX环境高级编程》了解了关于进程和线程的相关知识,为现在接触python的同类概念打下了基础。有兴趣的同学也可以阅读这本书。

当我们需要并行的执行多个任务的时候,在python语言中有两种方式:进程分支线程派生

在这节中我们将会介绍进程分支的技术,分支的进程是构建平行任务的传统做法,分支的想法基于程序的复制:在最初的阶段,当程序调用分支去开启另外一个程序的时候,操作系统会创建该程序及其在内存中的副本。但是在随后的使用过程中发现,新开启的程序往往执行的任务与原程序没有任何关系,所以操作系统提出了写时复制这样的机制(即只有在原程序的资源被使用的时候才进行拷贝),极大的提高了内存和时间的效率。

在进行了分支操作后,原来的程序副本叫做父进程,而由os.fork创建的副本称为子进程

下面给出一个多进程的示例:

#!/usr/bin/env python

#-*-coding:utf-8-*-

import os


def create_child():
    print ('hello from child', os.getpid())
    os._exit(0)

if __name__ == '__main__':
    while True:
        new_pid = os.fork()
        if new_pid == 0:
            create_child()
        else:
            print ('hello from parent', os.getpid(), new_pid)
            if raw_input() == 'q':
                break 

注意:
1.使用os.fork()可以产生分支进程,返回值有两个,如果new_pid为0,则该区域的操作是属于子进程的,如果大于0则是属于父进程的操作。

这个os.fork只是对系统代码库的简单封装。

在上述示例中,每个进程运行后很快结束,因此在时间的重叠很少,接下来的示例中我们让进程进行一定时间上的sleep;

#!/usr/bin/env python

#-*-coding:utf-8-*-

import os
import time

def thild_count(count):
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值