weijiang2024
commited on
Upload folder using huggingface_hub
Browse files- utils/mamasnowflake.py +68 -0
- 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
|
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 |
# 根据两个点坐标截取人物画像图片
|