有没有什么方法可以阻止像Django中同步的Java这样的关键区域?Django中的线程同步
4
A
回答
5
您可以使用锁来确保一次只有一个线程将访问某个代码块。
为此,您只需创建一个Lock对象,然后在想要同步的代码块之前获取该锁。举例:
lock = Lock()
lock.acquire() # will block if another thread has lock
try:
... use lock
finally:
lock.release()
欲了解更多信息,请参阅http://effbot.org/zone/thread-synchronization.htm。
+0
正如路易斯在这个问题上评论的那样,这只会在单个服务器进程时才起作用,通常情况并非如此。 – RexE 2017-09-13 04:56:11
0
大文章贾斯汀,使用Python 2.5的只有一件事,使这种方式更容易
在Python 2.5和更高版本,你也可以使用with语句。从未来进口
with_statement#2.5只
与锁: ...访问时用锁使用时,该语句将自动离开块时进入块之前获得锁,并释放共享资源
相关问题
- 1. 同步线程中的同步问题
- 2. Lisp中的线程同步
- 3. qt中的线程同步
- 4. C#中的线程同步?
- 5. Python中的线程同步
- 6. WinCE中的线程同步
- 7. java中的线程/同步
- 8. 线程同步
- 9. 线程同步
- 10. 线程同步
- 11. 线程同步
- 12. 线程/同步
- 13. 线程同步
- 14. 同步线程
- 15. 线程同步
- 16. 线程同步
- 17. 多线程,线程同步
- 18. 线程同步VS进程同步
- 19. 在java中同步线程
- 20. 在C中同步线程#
- 21. 在ruby中同步线程
- 22. 在线程中同步Hashmap
- 23. 同步Django的sqlite3教程
- 24. Python线程同步
- 25. 线程和同步
- 26. 线程和同步
- 27. .NET线程同步
- 28. 同步:ImageDownloader线程
- 29. 线程vs同步
- 30. Python线程同步
在很多情况下,像Java的'synchronized'这样的东西对于Django代码来说不够好。 Django应用程序中的常见场景不是仅仅保护*其他线程的资源*,而是来自*尝试使用资源*的任何代码。在许多情况下,WSGI服务器将使用多个*进程*来为请求提供服务,因此您不仅需要防止单个进程中的其他线程访问资源,还要阻止所有可能尝试访问它的进程。 'synchronized'对于这个并不够好,而一个复制'synchronized'的Python解决方案也不够好。 – Louis 2015-05-11 14:39:09