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


    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()
  • 相关阅读:
    搭建angularjs API文档站点
    Web网站数据”实时”更新设计
    3kb jQuery代码搞定各种树形选择。
    阿里妈妈自动登录程序
    Android中RelativeLayout属性详细说明
    jQuery选择器总结
    ajax页面加载进度条插件
    jquery ajax 方法及各参数详解
    使用jQuery加载html页面到指定的div
    C#中无边框窗体移动
  • 原文地址:https://www.cnblogs.com/qwj-sysu/p/5568232.html
Copyright © 2020-2023  润新知