小编age*_*ith的帖子

vi vim 替换寄存器中的文本

学习vi/vim和 Linux 并学习使用:reg:let。我的问题是如何替换和替换(编辑)寄存器的文本?我在网上和 vi/vim 帮助中进行了搜索,并进行了一些尝试,但没有预期的结果......

Ex:

Register a:
"1.  This is a sentence.  This is another sentence.  This is yet another sentence."
Run Code Online (Sandbox Code Playgroud)

:.s/This/That/g - 当文本在文件中时,将整行中所有出现的“This”替换为“That”。

注册a时如何用“那个”替换“这个”?

预先感谢您的建议或答案...

马丁

linux vi vim

7
推荐指数
1
解决办法
108
查看次数

将线程与 asyncio 结合使用

我正在寻找一种方法来生成不同的线程(在我的实际程序中,线程数在执行过程中可以改变)来执行无限运行的操作,这会在运行期间阻塞我的整个应用程序(最坏的情况是)几秒钟。
因此,我使用标准线程类asyncio(因为我的程序的其他部分正在使用它)。

这似乎工作得很好,根据这个线程,它似乎没问题,但是当搜索异步线程asyncio时,我经常会偶然发现使用的建议ProcessPoolExecutor(例如在这个stackoverflow 帖子中)。 现在我想知道,以下方法是否真的是好的做法(甚至是危险的)?

class Scanner:
  def __init__(self):
    # Start a new Scanning Thread
    self.scan_thread = Thread(target=self.doScan, args=())
    self.scan_thread.start()

  def doScan(self):
    print("Started scanning")
    loop = asyncio.new_event_loop()
    loop.run_until_complete(self.connection())
    print("Stopped scanning")

list_of_scanner = []
list_of_scanner.append(Scanner())
list_of_scanner.append(Scanner())
Run Code Online (Sandbox Code Playgroud)

背景:我自己开始质疑这一点,因为我的程序在生成线程时开始崩溃,主要是出现错误消息 RuntimeError: Task <Task pending ...> attached to a different loop。我知道这与我给您的示例没有直接联系,但我想我开始通过使用这些线程搞乱我的异步协程。


编辑

为了澄清起见,我想补充一下,为什么我使用asyncioand的这种奇怪的构造threads

  1. 我正在使用项目hbldh/bleak
    的这一部分作为线程运行的部分基本上是这样的:
    async def connection():
      x = await client.is_connected()
      async with BleakClient(address, …
    Run Code Online (Sandbox Code Playgroud)

python multithreading python-asyncio

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

linux ×1

multithreading ×1

python ×1

python-asyncio ×1

vi ×1

vim ×1