done和cancel什么意思,ok和cancel分别什么意思

首页 > 教育 > 作者:YD1662024-05-03 20:03:42

我们已经讲过了什么是线程,那今天就来学习一下什么是进程,进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

进程是正在运行的程序的实例,简单的说就是比如我们自己在python文件中写了一些代码,这叫做程序,而运行这个python文件的时候就叫做进程

什么是并发

那什么是并发呢,并发就是在某个时间段内,两件或两件以上的事件轮流交替使用某一资源,其目的是提高效率;

需要注意的是并发和并行的区别:

multiprocess模块

Python中提供multiprocess模块实现多进程并发,我们来看一下multiprocess模块的使用,通过一个实例来对比多线程和多进程程序运行对CPU的使用情况

import multiprocessing import threading def worker(): number = 0 for i in range(10000000): number = 1 print('循环次数:{} number:{}'.format(i 1, number)) if __name__ == '__main__': for i in range(4): # 创建线程 threading.Thread(target=worker, name='thread worker {}'.format(i)).start() # 创建进程 multiprocessing.Process(target=worker, name='process worker {}'.format(i)).start()

done和cancel什么意思,ok和cancel分别什么意思(1)

分别启动线程和进程,运行代码,查看电脑的CPU的使用率,发现多进程占用内存多,切换复杂,CPU利用率低,多线程占用内存少,切换简单,CPU利用率高;

进程的一些对象方法

import multiprocessing import threading import time def worker(): number = 0 for i in range(10000000): number = 1 time.sleep(0.1) print(multiprocessing.current_process().name) # 获取当前进程的名称 print('循环次数:{} number:{}'.format(i 1,number )) if __name__ == '__main__': for i in range(4): process = multiprocessing.Process(target=worker, name='process worker {}'.format(i)) process.start() print(process.pid) # 获取进程的pid print(process.exitcode) # 获取退出状态码 print(process.name) # 获取进程名称 time.sleep(30) print(process.terminate()) # 终止进程

done和cancel什么意思,ok和cancel分别什么意思(2)

进程并发:concurrent模块

from concurrent.futures import ProcessPoolExecutor import requests def fetch_url(url): result = requests.get(url=url, ) return result.text if __name__ == '__main__': # 创建10个线程队列的线程池 pool = ProcessPoolExecutor(10) # 获取任务返回对象 a = pool.submit(fetch_url, 'http://www.baidu.com') # 取出返回的结果 x = a.result() print(x)

done和cancel什么意思,ok和cancel分别什么意思(3)

也可以使用上下文管理的方式

from concurrent.futures import ProcessPoolExecutor import requests def fetch_url(url): result = requests.get(url=url, ) return result.text if __name__ == '__main__': with ProcessPoolExecutor(max_workers=10) as pool: a = pool.submit(fetch_url, 'http://www.9xkd.com') print(a.result())

done和cancel什么意思,ok和cancel分别什么意思(4)

守护进程实现(PosIX兼容)

守护进程实现的步骤:

对 os.fork( )的理解:

import os pid = os.fork() print(pid) if pid == 0: print("我是子进程 pid={}, parent_pid={}".format(os.getpid(), os.getppid())) else: print("我是父进程 pid={}, parent_pid={}".format(os.getpid(), os.getppid()))

done和cancel什么意思,ok和cancel分别什么意思(5)

参考:https://www.9xkd.com/user/plan-view.html?id=1923439230

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.