python 进程池/线程池

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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值