八周四次课(12月14日) 15.3 多线程共享变量 15.4 线程池

八周四次课(12月14日)

15.3 多线程共享变量

线程共享变量
多线程和多进程不同之处在于多线程本身就是可以和父进程共享内存的,这也是为什么其中一个线程挂掉以后,为什么其他线程也会死掉的道理。

#!/usr/bin/env 
python# -*- coding:utf-8 -*-
import threading
l = list()
l += range(1, 10)
def worker():    
l.append("ling")
l.append("shang")
l.append("hello")
if __name__ == "__main__":
t = threading.Thread(target=worker)
t.start()
print(l)

15.4 线程池

通过传入一个参数组来实现多线程,并且它的多线程是有序的,顺序与参数组中的参数顺序保持一致。
安装包:
pip install threadpool

调用格式:

from threadpool import *
pool = ThreadPool(poolsize) 
requests = makeRequests(some_callable, list_of_args, callback) 
[pool.putRequest(req) for req in requests] 
pool.wait()

#!/usr/bin/env python# -*- coding:utf-8 -*-
# @Time    : 2017/11/5 15:33
# @Author  : lingxiangxiang
# @File    : test14.py
import threadpool
def hello(m, n, o):
""""""
print "m = %s, n = %s, o = %s" % (m, n, o)
if __name__ == '__main__':
# 方法1
lst_vars_1 = ['1', '2', '3']
lst_vars_2 = ['4', '5', '6']
func_var = [(lst_vars_1, None), (lst_vars_2, None)] 

# 方法2
dict_vars_1 = {'m': '1', 'n': '2', 'o': '3'}
dict_vars_2 = {'m': '4', 'n': '5', 'o': '6'}
func_var = [(None, dict_vars_1), (None, dict_vars_2)] 
pool = threadpool.ThreadPool(2)
requests = threadpool.makeRequests(hello, func_var)    [pool.putRequest(req)for req in requests]
pool.wait()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值