进程与线程
来源:互联网 发布:华科达网络监控手机。 编辑:程序博客网 时间:2024/06/05 19:29
multiprocessing
进程模块。
常用方法
cpu_count():获取当前的电脑的cpu个数。
Process
表示一个进程。
常用方法
start():启动一个进程。
join():等待子进程结束后,再执行父进程。如:
import osfrom multiprocessing import Process # Process是跨平台的进程def fun(*args,**kwargs): for arg in args: print(arg) # 依次输出arg1,arg2 for key, value in kwargs.items(): print("key = %s,value = %s" % (key, value)) # 依次输出key = key1,value = value1等 print("process %s-%s" % (os.getpid(), os.getppid())) # process 6848-7560if __name__ == '__main__': print("主进程%s"%os.getpid()) # 主进程7560 p = Process(target=fun, args=('arg1','arg2'),kwargs={'key1':"value1","key2":34}) p.start() p.join() print("主进程end") # 最后执行,等所有子进程都结束后才执行
__init__:构造函数。target关键字指向子进程要执行的代码,args是一个元组,指的是向代码中传递的参数,kwargs是一个字典,也是向子进程中传递的参数。
Pool
进程池。
__init__:可以指定缓存的进程的个数。如果获取的进程超过这个个数,则必须等待已有的进程结束后才会获取到新的进程。
apply_async():在子进程中执行指定的代码。参数与Process的构造函数类似,func指向子进行要执行的方法,args,kwds指向传入的参数。
close():关闭进程池,调用后无法向该进程池中传入新进程。
join():进程池中进程都结束后,父进程才会继续执行。必须在close()方法后执行。如:
import os,time,randomfrom multiprocessing import Pool # Process是跨平台的进程def f(name): print("name = %s,pid = %s,ppid = %s" % (name, os.getpid(),os.getppid())) time.sleep(random.random()*3) # 每一个进程休息一会儿,这样会导致Pool不停地if __name__ == '__main__': print(os.getpid()) p = Pool(3) for x in range(1,6): p.apply_async(args=(x,),func=f) p.close() p.join()运行时,可以发现先执行三个进程,而且Pid只有三个——因为Pool中的参数指定的是3,它规定了这个进程池中最多只有三个进程,当用完之后必须等某一个进程回收之后才会再次分配出去执行其余的代码。
threading
线程模块。
Thread
代表一个线程。
__init__:构造函数。target指该线程要执行的代码,args是传入的参数,name指该线程的名字。
start():启动该线程。
join():等该线程结束后再执行别的代码。这两个方法都与Process类似。
lock
锁,用于线程同步。通过threading模块中的Lock()方法获取一个lock对象。
acquire():为某一段代码加锁,加锁之后该代码一次只能允许一个线程进行访问。
release():释放锁。
- 进程与线程线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 进程与线程
- 线程与进程
- 线程与进程
- 进程与线程
- 进程与线程
- 线程与进程
- 进程与线程
- 微信端开发--登录小程序
- tomcat keep-alive
- 【 Nginx+Apache-Tomcat7+Memcached搭建负载均衡实现Session共享】
- C#_不假死的延时
- Jenkins+Git+PHP生成构建PHP项目的changelog以用于生成增量或减量打包发布
- 进程与线程
- hdoj 1847 Good Luck in CET-4 Everybody!【博弈】
- 断言错误
- 将Android Studio中的项目上传到GitHub
- Android:WebView全面详解
- Python 爬虫的工具列表 附Github代码下载链接
- Spring 3.x 企业开发实战Chapter4 Part2
- 三次握手和四次挥手的流程
- java编译的莫名奇妙问题总结