多进程
from multiprocessing import Process
def func(name):
***
def main():
#args以tuple方式传入参数
process = Process(target = func,args=(‘Lucy’,))
process.start()
process.join()
if __name__ == ‘__main__’:
main()
运行多个进行:
process = [Process(target=func,args=(‘Hello’,)) for i in range(10)]
for i in process:
i.start()
for i in process:
i.join()
Pipe
from multiprocessing import Process,Pipe
con1,con2 = Pipe()
def send():
data=’**’
con1.send(data)
def recv():
data1 = con2.recv()
def main():
Process(target = send,args=(‘Hello’,)).start()
Process(target = recv).start()
if __name__ == ‘__main__’:
main()
Queue
from multiprocessing import Process,Queue
queue = Queue()
def f1(q):
i = ‘Hello’
q.put(i)
def f2(q):
q.get()
def main():
Process(target=f1,args=(queue,)).start()
Process(target=f2,args=(queue,)).start()
if __name__ == ‘__main__’:
main()
Value:实现数据在多进程之间共享,返回的value对象可以看做是一个全局共享的变量
from multiprocessing import Process,Value,Lock
def func(val,lock):
for i in range(50):
with lock:
val.value+=1
def main():
val = Value(‘i’,0)# i代表是整数,0是value的值
lock = Lock()
Process(target=func,args=(val,lock))
Pool 进程池,批量创建子进程,进程池内维持一个固定的进程数量,当有任务到来时,就去池子中去一个进程处理任务,处理完后,进程被返回进程池
from multiprocessing import Pool
def task(name):
if __name__ == ‘__main__’:
p = Pool(4)#创建进程池,有4个进程可用
for i in range(1,6):
#apply_async 异步启动进程池
p.apply_async(task,args=(i,))
p.close()
#关闭进程池
p.join()
#挂起主进程,直到进程池内任务全部完成
多线程
import threading
def func():
def main():
t = threading.Thread(target=func,args=(‘Hello’,))
t.start()
t.join()