我应该如何在python中多线程?

问题描述 投票:0回答:1

我有坐标列表,我必须使用pyautogui模拟鼠标点击。这些坐标基本上是从帧中从实时视频流中检索出来的。因此,为每个帧模拟鼠标单击并不够快。

所以我打算做的是:

  • 从每个帧添加坐标到数组/双端队列。
  • 然后(也许)创建一个线程,我可以循环遍历数组并按顺序模拟鼠标单击,这不会阻止主线程。

这会解决问题吗?有没有其他方法可以使用pyautogui快速执行点击?

(我不熟悉多线程)

python multithreading pyautogui
1个回答
0
投票

我认为这取决于,这是分配工作的常见模式。您的工作负载是否受限?如果是这样,线程将无法帮助您扩展,因为GIL争用。如果它是IO绑定而不是线程可能是一个好的起点。

有了thread pool pattern,你就会像你勾勒出的那样扇出工作:

  • 排队工作而不阻塞主线程,然后消费者线程将在循环中从队列中读取。

如果您的处理受CPU限制,则使用相同模式的多处理池可能会有所帮助:

多处理DOES提供池抽象,除了队列需要某种进程间通信(由多处理队列处理)之外,它将是相同的。

https://docs.python.org/2/library/multiprocessing.html#using-a-pool-of-workers

每个应该相对容易设置,并且应该很容易对每个进行基准测试,看看它们是否提供了性能改进。

© www.soinside.com 2019 - 2024. All rights reserved.