1.进程/线程池:
#进程:
from concurrent.futures import ThreadPoolExecutor ,ProcessPoolExecutor
def func(args):
time.sleep(1)
print(args)
if __name__=='__main__':
Pool = ProcessPoolExecutor(3)
for i in range(10):
Pool.submit(func,i)
输出:
0
2
1
3
4
5
6
8
7
9
Process finished with exit code 0
#线程:
def func(args):
time.sleep(2)
print(args)
if __name__=='__main__':
Pool = TheadPoolExecutor(3)
for i in range(10):
Pool.submit(func,i)
输出:
1
20
3
5
4
7
6
8
9
Process finished with exit code 0
2.进程锁:
import multiprocessing
lock = multiprocessing.RLock()
def func(args):
print(' >>> 有进程进来了 >>> ')
lock.acquire()
print(args)
lock.release()
if __name__=='__main__':
multiprocessing.Process(target = func,args=('进程 >>> %s' %1,)).start()
multiprocessing.Process(target = func,args=('进程 >>> %s' %2,)).start()
输出:
>>> 有进程进来了 >>>
进程 >>> 1
>>> 有进程进来了 >>>
进程 >>> 2
Process finished with exit code 0
3.线程锁:
import threading
lock = threading.RLock()
def func(args):
print(' >>> 有线程进来了 >>> ')
lock.acquire()
print(args)
lock.release()
if __name__=='__main__':
threading.Thread(target = func,args=('线程 >>> %s' %1,)).start()
threading.Thread(target = func,args=('线程 >>> %s' %2,)).start()
输出:
>>> 有线程进来了 >>>
线程 >>> 1
>>> 有线程进来了 >>>
线程 >>> 2
Process finished with exit code 0
4.对列(Queue):
import queue
q = queue.Queue()
q.put(' >>> 上酒菜 >>> ')
q.put('客官 >>> 来了')
q1 = q.get()
q2 = q.get()
print(q1)
print(q2)
输出:
>>> 上酒菜 >>>
客官 >>> 来了
Process finished with exit code 0
#没有加队列:
import threading , time
def func(args):
print(' >>> 有线程进来了 >>> ')
time.sleep(1)
print(args)
if __name__=='__main__':
threading.Thread(target = func,args=('线程 >>> %s' %1,)).start()
threading.Thread(target = func,args=('线程 >>> %s' %2,)).start()
输出:
>>> 有线程进来了 >>>
>>> 有线程进来了 >>>
线程 >>> 2
线程 >>> 1
Process finished with exit code 0
#加队列:
import threading , queue ,time
q = queue.Queue(5)
def func(args):
print(' >>> 有线程进来了 >>> ')
time.sleep(2)
print(args)
if __name__=='__main__':
p1 = threading.Thread(target = func,args=('线程 >>> %s' %1,)).start()
p2 = threading.Thread(target = func,args=('线程 >>> %s' %2,)).start()
q.put(p1)
q.put(p2)
v1 = q.get()
v2 = q.get()
print(v1)
print(v2)
输出:
>>> 有线程进来了 >>>
>>> 有线程进来了 >>> None
None
线程 >>> 1
线程 >>> 2
Process finished with exit code 0