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()

最新文章

  1. iOS网络4——Reachability检测网络状态
  2. 解决Android studio导入项目卡死
  3. HDU 3078 (LCA+树链第K大)
  4. 计算机网络(2)-----ARP协议
  5. BZOJ1968 [Ahoi2005]COMMON 约数研究
  6. ASP.NET后台JS弹框使前台页面样式丢失 解决办法
  7. 【linux命令】grep
  8. 5分钟实现Android中更换头像功能
  9. 硬件描述语言Verilog设计经验总结
  10. JConsole是什么
  11. Kindle使用技巧
  12. (蓝牙)网络编程中,使用InputStream read方法读取数据阻塞的解决方法
  13. FbinstTool(U盘启动盘制作工具) v1.606 免费绿色版
  14. (3)activiti流程的挂起和激活
  15. mvc4中的过滤器
  16. cassandra高级操作之分页的java实现(有项目具体需求)
  17. OpenCV探索之路(九):模板匹配
  18. 源码阅读—Iterator接口和LIstIterator接口
  19. grpc 入门(一)--hello world
  20. Java多种方式读文件,追加文件内容,等对文件的各种操作

热门文章

  1. BZOJ4137 & 洛谷4585:[FJOI2015]火星商店问题
  2. Linux之初试驱动20160613
  3. select2 全拼以及首字母
  4. HDU 3487 Splay tree
  5. Android如何在初始化的时候获取加载的布局的宽高
  6. [技巧篇]19.InputStream与String,Byte之间互转[转载]
  7. HDU 5950Recursive sequence ICPC沈阳站
  8. jquery checkbox选中状态以及实现全选反选
  9. go通过名称来调用对应的方法
  10. ReaderWriterLockSlim 类