Python重新加载线程安全吗?

2024-05-29 03:43:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了一个讨厌的cralwer系统,从每个地方政府的网站上抓取一些东西,网站总数超过100个,以防他们的网页发生变化,我不得不使用reload进行热更新。但我想知道重新加载是否线程安全。因为我在线程1中重新加载moudle Cralwer1,但同时,线程2使用Cralwer1。线程1的重新加载会导致线程2失败吗?如果是这样的话,我必须做一个锁什么的,否则,我可以很高兴地重新加载没有额外的工作。有人能帮我吗?在


Tags: 网页网站系统地方线程reload政府cralwer
2条回答

reload=在crawre1中重新执行顶层代码。在

一般来说,如果没有更多的信息/代码示例,您可以:

  • 封装启动程序的“可操作”顶层代码,例如将其放入函数或类中,并调用它而不是重新加载整个模块。添加/调用此函数可能会涉及到一些清理。

  • 使用一个全局变量,thread1和thread2将翻转并注意该变量,以防止相互踩踏。这并不能很好地扩展,但可能会阻止/延迟锁的使用。

  • 使用锁其实没那么难, 它们甚至支持上下文管理器: https://docs.python.org/3/library/threading.html#with-locks

Is Python reload thread safe?

没有

reload()执行模块中所有纯python代码。任何纯python步骤都可以在任何时候进行线程切换。所以,这绝对不安全。在

相关问题 更多 >

    热门问题