微网站设计,百度小程序wordpress,网站域名提交,电子商务网站方案当需要创建的子进程数量不多时#xff0c;可以直接利用multiprocessing中的Process动态生成多个进程
但是如果是上百个或者上千个目标#xff0c;手动去创建进程的工作量很大#xff0c;此时就可以利用到Multiprocessing模块提供的Pool方法
初始化pool时#xff0c;可以指定…
当需要创建的子进程数量不多时可以直接利用multiprocessing中的Process动态生成多个进程
但是如果是上百个或者上千个目标手动去创建进程的工作量很大此时就可以利用到Multiprocessing模块提供的Pool方法
初始化pool时可以指定一个最大进程数当有新的请求提交到Pool中时如果池还没有满
那么就会创建一个新的进程来执行该请求但是如果池中的进程数量已经达到指定的最大值那么该请求会等待
直到池中有进程结束才会创建新的进程来执行
阻塞式添加一个执行一个如果一个任务不结束宁外一个任务就进不来
非阻塞式:全部添加到队列中立刻返回并没有等待其它进程执行完毕但是回调函数是等地啊任务完成之后才调用。
好处设置进程数量达到进程的复用poolPool(max) 创建进程池对象
pool.apply()阻塞的
pool.apply_async()非阻塞的
pool.close()停止添加进程
pool.join#让主进程让步
queue 进程通信import os
from multiprocessing import Pool
#非阻塞式进程
import time
from random import random
from multiprocessing import QueueqQueue(6)
q.put(A)
q.put(B)
q.put(C)
q.put(D)
# q.put(E)print(q.qsize())
if not q.full():q.put(F,timeout3)#put() 如果queue满了则只能等待除非有空地则添加成功
else:print(队列已满)
print()
print(q.get())
print(q.get())
print()
# print(q.get())
# print(q.get())
# print(q.get())
# print(q.get(timeout2))print(q.put_nowait(E))
print()
print(q.get_nowait())
print(---)
#进程通信
from multiprocessing import Process,Queue
import timedef download(q):images[girl.jpg,boy.jpg,man.jpg]for image in images:print(正在下载%s%image)time.sleep(1)q.put(image)def getfile(q):while True:try:fileq.get(timeout5)print(f{file}保存成功)except:print(全部保存成功)breakif __name____main__:q Queue(5)p1Process(targetdownload,args(q,))p2Process(targetgetfile,args(q,))p1.start()p2.start()p2.join()p1.join()
#进程线程
#Process类
#def func(n):
# pass
#创建进程pProcess(targetfunc,name,args(1,),kwargs)
#启动p.start()
#run()
from multiprocessing import Process
class MyProcess(Process):def run(self):passpMyProcess()
p.start()
#进程的数据共享
n0
#进程池Pool
from multiprocessing import pool
ppool(5)
#阻塞式 apply(func,args,kwargs)
#非阻塞式 apply_async(fun,args,kwargs,callback函数)
# 进程间的通信 queue
from multiprocessing import Queue
qQueue(4)
q.put()
q.get()
q.qsize()
q.empty()
q.full()
#线程关系
# 包含关系
#进程里面可以存着多个线程多个线程可以共用进程资源
from threading import Thread
tThread(targetfunc,name,args(1,),kwargs)
t.start()