weijiang2024 commited on
Commit
8ecfce3
·
verified ·
1 Parent(s): 8ca9228

Upload folder using huggingface_hub

Browse files
Files changed (2) hide show
  1. utils/mamasnowflake.py +68 -0
  2. utils/utils.py +1 -1
utils/mamasnowflake.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import time
2
+ import threading
3
+
4
+
5
+ class Snowflake:
6
+ """
7
+ 生成随机ID作为时尚行人名字
8
+ TODO: 参考:
9
+ """
10
+
11
+ def __init__(self, datacenter_id=0, worker_id=0):
12
+
13
+ self.datacenter_id = datacenter_id
14
+ self.worker_id = worker_id
15
+ self.sequence = 0
16
+ self.lock = threading.Lock()
17
+
18
+ # Twitter的Snowflake算法起始时间戳(2014-01-01)
19
+ self.twepoch = 1388534400000
20
+ self.worker_id_bits = 5
21
+ self.datacenter_id_bits = 5
22
+ self.max_worker_id = -1 ^ (-1 << self.worker_id_bits)
23
+ self.max_datacenter_id = -1 ^ (-1 << self.datacenter_id_bits)
24
+ self.sequence_bits = 12
25
+
26
+ self.worker_id_shift = self.sequence_bits
27
+ self.datacenter_id_shift = self.sequence_bits + self.worker_id_bits
28
+ self.timestamp_left_shift = self.sequence_bits + self.worker_id_bits + self.datacenter_id_bits
29
+ self.sequence_mask = -1 ^ (-1 << self.sequence_bits)
30
+
31
+ self.last_timestamp = -1
32
+
33
+ def _til_next_millis(self, last_timestamp):
34
+ timestamp = time.time_ns() // 1000000 # 转换为毫秒
35
+ while timestamp <= last_timestamp:
36
+ timestamp = time.time_ns() // 1000000
37
+ return timestamp
38
+
39
+ def _next_id(self):
40
+ with self.lock:
41
+ timestamp = time.time_ns() // 1000000
42
+ if self.last_timestamp == timestamp:
43
+ self.sequence = (self.sequence + 1) & self.sequence_mask
44
+ if self.sequence == 0:
45
+ timestamp = self._til_next_millis(self.last_timestamp)
46
+ else:
47
+ self.sequence = 0
48
+
49
+ if timestamp < self.last_timestamp:
50
+ raise Exception("Clock moved backwards. Refusing to generate id for %d milliseconds" % (
51
+ self.last_timestamp - timestamp))
52
+
53
+ self.last_timestamp = timestamp
54
+
55
+ return ((timestamp - self.twepoch) << self.timestamp_left_shift) | \
56
+ (self.datacenter_id << self.datacenter_id_shift) | \
57
+ (self.worker_id << self.worker_id_shift) | \
58
+ self.sequence
59
+
60
+ def generate(self):
61
+
62
+ return self._next_id()
63
+
64
+
65
+ if __name__ == "__main__":
66
+ snowflake = Snowflake(datacenter_id=1, worker_id=3)
67
+ for i in range(10):
68
+ print(snowflake.generate())
utils/utils.py CHANGED
@@ -5,7 +5,7 @@ from collections import Counter
5
  #from algs.alg0.utils.snowflake import *
6
  #from algs.alg0.eval_fashion_person import *
7
 
8
- from snowflake import *
9
  from eval_fashion_person import *
10
 
11
  # 根据两个点坐标截取人物画像图片
 
5
  #from algs.alg0.utils.snowflake import *
6
  #from algs.alg0.eval_fashion_person import *
7
 
8
+ from mamasnowflake import *
9
  from eval_fashion_person import *
10
 
11
  # 根据两个点坐标截取人物画像图片