我有一个包含员工信息的数据库。我有4000名员工。每个员工都有一个唯一的识别号。
我尝试使用python脚本从数据库中获取每个雇员的雇员信息。对于1名员工,获取信息的执行时间为1秒。对于4000名员工来说,它只需要4000
秒(67分钟,谁愿意等那么久?)。
员工信息应以以下格式存储在字典中:
infos = {"ID1": ["info for employee 1"], "ID2": ["info for employee 2"], ... }
我想做以下几点来减少执行时间:
有可能吗?这种方法能将执行时间减少10倍吗?你知道吗
我觉得你把线程和并发搞混了。你知道吗
线程是简单地同时使用多个执行线程的行为。这并不意味着多个动作同时进行,尽管。。。你的处理器仍然需要在线程之间切换。当您希望等待一个操作完成很长时间(比如读取一个大文件)并且希望同时发生其他事情(例如打印进度条)时,这种技术非常有用。你知道吗
并发性是指当您创建多个线程时,不同的线程被分配给处理器中的不同内核。当然,这取决于硬件(您需要一个多核处理器来完成)。你知道吗
当然,Python的
threading
模块允许创建多个线程;在理想情况下,它将自动处理并发性。但是由于“全局解释器锁”,默认的Python解释器CPython不允许本机并发。(请参见第17.1.3节标题上方的this page和this SO post以获取有关GIL的更多信息)事实上,如您所建议的那样使用threading
甚至可能会使执行变慢(请参见here)。你知道吗我还没有用Python实现并发,但是我建议您检查一下^{} 模块作为一个可能的解决方案。你知道吗
相关问题 更多 >
编程相关推荐