免费论文查重: 大雅 万方 维普 turnitin paperpass

有关于Python语言多进程与多线程设计

最后更新时间:2024-04-02 作者:用户投稿原创标记本站原创 点赞:9096 浏览:35065
论文导读:ifpid==0:print('thisisachildprocess(%s)\nthisisaparentprocessis(%s).'%(os.getpid(),os.getppid()))else:print('this(%s)hecreatedachildprocess(%s).'%(os.getpid(),pid))该段程序中,利用os.fork()创建子进程pid,而后通过os.getpid()获取当前进程号,os.getppid()获取父进程号
摘 要:作为一种新型面向对象,解释型程序设计语言,python在近年来被广泛运用于系统管理和web开发,其特点是语法简洁,清晰,具有丰富强大的类库,且易于理解和维护。随着计算机硬件技术的迅速发展,多核CPU及并行计算技术的大规模应用,在程序设计中,如何处理好进程和线程优化管理理由,是提高程序运转效率的关键。
关键词:面向对象;Python;进程和线程;程序设计
中图分类号:TP393.01
1 进程与线程简介
进程是指一个具有独立功能的程序关于某个数据集合的一次运转活动,相对于程序而言,它是一个动态的概念,是指“执行中的程序”。而线程则是进程中的某个单一顺序制约流,是程序执行和CPU调度的基本单位,进程和线程的区别在于:(1)一个进程中至少包含一个线程,线程是进程的子集;(2)进程间相互独立,系统为每个进程分配单独数据空间,而同一进程中的线程间数据共享。
在单核CPU时代,操作系统为完成多任务程序处理,通常采用时间片轮转调度算法,即为每个进程或线程分配一定长度的时间段,将所要执行任务按优先级排成队列,依次执行,并通过反复切换进程块,完成虚拟多任务操作。而多核CPU的出现,可以使得程序进程在多个硬件内核中并行处理,从而让系统真正实现了多任务管理。在Python开发语言可以同时支持多进程,多线程程序设计,通常采用三种设计方案:(1)多进程设计;(2)多线程设计;(3)多里程+多线程设计。下面逐一介绍其原理。
2 多进程设计
在一般程序设计当中,通常只有一个进程,即父进程,为了实现多任务程序开发,就必须增加进程块,即子进程。增加进程块一般采用调用Python类库模块的方式实现,而对于不同的操作系统,所使用的调用策略也有所不同,在Unix/Linux系统中,提供了一个fork()函数的系统调用,用于创建子进程,代码如下:
import os
print'Process(%s)start...'%os.getpid()
pid=os.fork()
if pid==0:
print('this is a child process(%s)\n this is a parent process is (%s).'%(os.getpid(),os.getppid()))
else:
print('this (%s)he created a child process (%s).'%(os.getpid(),pid))
该段程序中,利用os.fork()创建子进程pid,而后通过os.getpid()获取当前进程号,os.getppid()获取父进程号,运转结果如下:
Process(1123)start...
this(1123) he created a child process(1124).
this is child process(1124)
this is a parent progerss(1123).
而对于windows系统下运转的Python而言,由于没有fork()调用,因此,通常会利用multiprocessing模块完成任务,作为一个跨平台版本的多进程模块,multiprocessing可以提供一个process类,并以此创建子进程,代码如下:
from multiprocessing import Process
import os
def proc(name):
print('this is a child process %s(%s)...'%(name,os.getpid()))
if__name__=='__main__':
print('this is a Parent process %s.'% os.getpid())
p=Process(target=proc,args=('test',))
print('Process will start.')
p.start()
p.join()
print('Process end.')
该段代码中,利用process创建一个实例p,通过函数调用和参数传递,并用start()策略启动,建立子进程,而后用join()策略,在函数调用结束后继续运转下一步运转,程序运转结果如下:
this is a Parent process 1228.
Process will start.
this is a child process test(1229)...
Process end.
3 多线程设计
Python不仅支持多进程,同时也支持多线程设计,Python标准库提供两个模块:thread和threading,其中,thread是低级模块,而threading是高级模块,是对thread进行二次封装,使用api接口函数处理线程。绝大多数情况下,我们只需要使用threading这个高级模块,创建子线程的策略类似于多进程设计,先是创建thread实例,而后通过函数调用参数传递,并用start()启动,代码如下:
import time,threading
def loop():
print'%s start...'%threading.current_thread().name
for n in range(5): 全文地址:www.7ctime.com/yyyylw/lw41913.html上一论文:简析文学经典课堂解读的普遍性误区微探