1. #coding=utf-8
  2. import time
  3. import base64
  4. import getopt
  5. import sys
  6. import threading
  7. import random
  8. import string
  9. import os
  10. def base64_cal():
  11. str = 'admin'
  12. str = str.encode('utf-8')
  13. # 加密
  14. bs64 = base64.b64encode(str)
  15. # 解密
  16. debs64 = base64.b64decode(bs64)
  17. print(debs64.decode("utf-8"))
  18. # base32bit加密
  19. bs32 = base64.b32encode(str)
  20. debs32 = base64.b32decode(bs32)
  21. print(debs32.decode("utf-8"))
  22.  
  23. def enterParams():
  24. opts, args = getopt.getopt(sys.argv[1:], '-h-c:f:', ['help', 'concurrent=', 'file='])
  25. concurrent_data=None
  26. filename=None
  27. for opt_name, opt_value in opts:
  28. print(opt_name,opt_value)
  29. if opt_name in ('-h', '--help'):
  30. usage()
  31. sys.exit()
  32. if opt_name in ('-c', '--concurrent'):
  33. if type(opt_value).__name__=='str':
  34. concurrent_data=opt_value
  35. if opt_name in ('-f', '--file'):
  36. filename = opt_value
  37. # else:
  38. # # return None
  39. # raise TypeError("enter param {} not file's path".format(opt_value))
  40.  
  41. return concurrent_data,filename
  42.  
  43. def usage():
  44. str="--help:\n\t-c : concurrent TotalData\n\t -f: filename's path\n--example:" \
  45. "\n\tpython testfile.py -c 1000000 -file=./res/testPython.txt"
  46. print(str)
  47.  
  48. class ConcurrentIdSample(threading.Thread):
  49. def __init__(self,func,args=()):
  50. self.func=func
  51. self.args=args
  52. threading.Thread.__init__(self)
  53. def run(self):
  54. self.result = self.func(*self.args)
  55. def get_result(self):
  56. try:
  57. return self.result
  58. except Exception:
  59. return None
  60.  
  61. def func(*args):
  62. # print(time.asctime())
  63. return ''.join(random.sample(string.hexdigits,random.randint(*args)))
  64.  
  65. def concurrent_execute(concurrent_data):
  66. pool=[]
  67. samplesList=[]
  68. for i in range(concurrent_data):
  69. thread_sample=ConcurrentIdSample(func,(16,20))
  70. pool.append(thread_sample)
  71. thread_sample.start()
  72. for thread in pool:
  73. thread.join()
  74. samplesList.append(thread.get_result())
  75. return samplesList
  76.  
  77. def outPut():
  78. st=time.time()
  79. concurrent_data,filename=enterParams()
  80. res=concurrent_execute(concurrent_data)
  81. end=time.time()
  82. during=end-st
  83. print(len(res),"\nmake {} datas time cost {}".format(concurrent_data,during),'\n')
  84. if __name__ == '__main__':
  85. enterParams()

  

100w并发产生唯一随机id的更多相关文章

  1. 【高性能】生成唯一时间戳ID,1毫秒预计能生成1000个

    凡事涉及到高性能貌似都是高大上的东西,所以嘛我也试试:其实这个时间戳ID的生成主要为了解决我们公司内部的券号生成,估计有小伙伴认为券号生成有这么麻烦嘛,搞个自增ID完全可以用起来,或者时间取毫微米时间 ...

  2. 可实现的全局唯一有序ID生成策略

    在博客园搜素全局唯一有序ID,罗列出来的文章大致讲述了以下几个问题,常见的生成全局唯一id的常见方法 :使用数据库自动增长序列实现 : 使用UUID实现:  使用redis实现: 使用Twitter的 ...

  3. 生成随机id对比

    生成随机id 最近公司的项目游戏生成的随机不重复id,重复概率有点大, 代码如下: private static int id = 0; public static int serverID = 0; ...

  4. 学习笔记找到多个具有相同 ID“_header”的控件,FindControl 要求控件具有唯一的 ID.

    解决 找到多个具有相同 ID“_header”的控件,FindControl 要求控件具有唯一的 ID. private void DisplayHotBooks()    {        //获取 ...

  5. 生成唯一的id(转)

    很多朋友都利用md5()来生成唯一的编号,但是md5()有几个缺点:1.无序,导致数据库中排序性能下降.2.太长,需要更多的存储空间.其实PHP中自带一个函数来生成唯一的id,这个函数就是uniqid ...

  6. extjs每一个组件要设置唯一的ID

    extjs每一个组件要设置唯一的ID,否则会造成各种错误 EXTJS基本上是靠ID来识别组件的,假如你在panel1中有个ID:"keyword"的textfield,而panel ...

  7. 用java生成32位全球唯一的id编号

    GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随即数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...

  8. js生成唯一的id

    1.生成[0,1)的随机数的Math.random Math.random().toString().replace(".", "");// 生成唯一的id 2 ...

  9. ionic获取ios唯一设备id的解决方案

    经常有朋友来问这个问题. 每次都去解释这个问题也浪费不少时间, 所以还是开一篇文章, 把这个问题说清楚吧. 先纠正一个误区吧: 有同学可以通过ionic natvie的device插件获取. 我们在文 ...

随机推荐

  1. js数组和对象

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Lindström–Gessel–Viennot lemma定理 行列式板子

    https://blog.csdn.net/qq_37025443/article/details/86537261 博客 下面是wiki上的讲解,建议耐心地看一遍...虽然看了可能还是不懂 http ...

  3. JS json对象(Object)和字符串(String)互转方法

    [JS json对象(Object)和字符串(String)互转方法] 参考:https://blog.csdn.net/wenqianla2550/article/details/78232706 ...

  4. 数据提取之JSON与JsonPATH

    数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...

  5. apache的下载

    官网http://www.apache.org/ 首页第三行左右 点a number of third party vendors 再点第一个ApacheHaus 最后来到windows的下载页面 h ...

  6. JavaScript - what is "this"? this是什么?

    https://fangyinghang.com/this-in-js/ Core func(p1, p2) // 等同于 func.call(undefined, p1, p2) this 就是ca ...

  7. __dirname和__filename和process.cwd()三者的区别

    1.process cwd() 方法返回 Node.js 进程当前工作的目录 例:我在F:\自己的文件\自己在网上学习的知识点\node学习\node-API\process 这个文件加下面创建了一个 ...

  8. opencv python:图像金字塔

    图像金字塔原理 expand = 扩大+卷积 拉普拉斯金字塔 PyrDown:降采样 PyrUp:还原 example import cv2 as cv import numpy as np # 图像 ...

  9. 吴裕雄 python 机器学习——模型选择数据集切分

    import numpy as np from sklearn.model_selection import train_test_split,KFold,StratifiedKFold,LeaveO ...

  10. 分享Linux系统快速入门法

    相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢? 首先,希望大家弄清楚自己为什么要学习Linux,有的人是因为兴趣 ...