擅长:python、mysql、java
<p>我认为这是一个很好的实现,如果您没有使用<code>RsuService</code>类进行并发操作的情况。你知道吗</p>
<p>但如果同时创建<code>RsuService</code>的两个或多个对象,它可能会失败。因为<code>+=</code>操作在python中是<a href="https://stackoverflow.com/questions/1717393/is-the-operator-thread-safe-in-python">not atomic</a>。你知道吗</p>
<p>如果你有并发操作的情况,我建议你这样做。你知道吗</p>
<pre><code>import threading
class RsuService(object):
next_id = 0
lock = threading.Lock() #lock shared by all objects of this class
def __init__(self):
lock.acquire()
self.rsu_id = RsuService.next_id
RsuService.next_id += 1
lock.release()
</code></pre>
<p>如果没有并发任务的情况,最好使用时间戳作为唯一id,因为如果重新启动程序,计数器将从头开始,这将是一个问题。你知道吗</p>
<pre><code>import time
...
RsuService.next_id = time.time()
</code></pre>