您的位置:首页 > 编程语言 > Python开发

python的多线程、多进程代码示例

2016-06-07 20:26 676 查看
原文链接:https://www.geek-share.com/detail/2676302360.html

python多进程和多线程的区别:
python的多线程不是真正意义上的多线程,由于python编译器的问题,导致python的多线程存在一个PIL锁,使得python的多线程的CPU利用率比预期的要低很多
python的多进程(java的应该也是)有内存拷贝的问题,所以建议用java或者c的多线程。

 

多线程有两种方式:thread和threading

这里应用的场景是map数据分多线程、进度写入codis的示例

这是thread的示例:thread的主进程不会等待线程

 

import thread,math,threading,multiprocessing,os,time
def writeToCodis(prefix,key_list,result_map):
# client = BfdCodis("xxx", )
begin = int(time.time())
for key in key_list:
print key
# client.set(prefix + key, result_map[key])
# client.expire(prefix + key, 1 * 24 * 3600)
end = int(time.time())
# 分配key
gidToSid={1:2,3:4}
total_key = len(gidToSid)
gap = int(math.ceil(float(total_key)/process_num))
keys = gidToSid.keys()
for i in range(0,process_num):
thread.start_new_thread(writeToCodis,(G2S_prefix,keys[i*gap:(i+1)*gap],gidToSid))
# t.start()
time.sleep(10)

 

threading 会等待线程的执行

for i in range(0,process_num):
t=threading.Thread(target=writeToCodis,args=(G2S_prefix,keys[i*gap:(i+1)*gap],gidToSid))
t.start()

 

这是多进程的示例

for i in range(0,process_num):
p = multiprocessing.Process(target=writeToCodis,args=(G2S_prefix,keys[i*gap:(i+1)*gap],gidToSid))
p.start()

 

转载于:https://www.cnblogs.com/qwj-sysu/p/5568232.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: