• 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()
  • 相关阅读:
    ubuntu16.04下vim安装失败
    Sql Server函数全解(三)数据类型转换函数和文本图像函数
    Sql Server函数全解(二)数学函数
    Sql server 2008 中varbinary查询
    处理乱码问题
    快速排序
    《Java编程思想》笔记 第二章 一切都是对象
    1021: 组合数末尾的零
    11462
    The Bus Driver Problem
  • 原文地址:https://www.cnblogs.com/qwj-sysu/p/5568232.html
Copyright © 2020-2023  润新知