使用python,我正在编写一个令人讨厌的cralwer系统,它可以从每个地方政府的网站上获取一些内容,而且总的网站数量超过100个,以防万一他们的网页发生变化,我必须使用重新加载来进行热更新。但我想知道重载是否是线程安全的。因为说,我在线程1中重新加载moudle Cralwer1,但同时,线程2正在使用Cralwer1。线程1重新加载会导致线程2失败吗?如果是这样,我必须做一个锁或什么的,否则,我很乐意在没有额外工作的情况下重新加载。谁能帮我吗?
答案 0 :(得分:1)
Python重载线程是否安全?
没有
reload()执行模块中的所有纯python代码。任何纯python步骤都可以随时进行线程切换。所以,这绝对不安全。
答案 1 :(得分:0)
reload =在Crawler1中重新执行顶级代码。
一般来说,如果没有更多信息/代码示例,您可以:
封装解决问题的“可操作”顶级代码,例如:把它放在一个函数或一个类中,并调用它而不是重新加载整个模块。这可能涉及调用/添加一些清理功能。
使用全局变量,thread1和thread2将翻转并注意防止相互踩踏。这不能很好地扩展,但可能会阻止/延迟锁的使用。