python - 多线程处理?

标签 python python-3.x web-crawler

当我尝试让我的脚本成为多线程时,

我发现了多处理,

我想知道是否有办法让多处理与线程一起工作?

  • cpu 1 -> 3 个线程(worker A、B、C)
  • cpu 2 -> 3 个线程(worker D、E、F)
  • ...

我想自己做,但我遇到了很多问题。

有没有办法让这两者协同工作?

最佳答案

您可以生成多个进程,然后从它们内部生成线程。每个进程几乎可以处理标准解释器线程可以处理的任何事情,因此没有什么可以阻止您在每个进程中创建新线程甚至新进程。作为一个最小的例子:

def foo():
    print("Thread Executing!")

def bar():
    threads = []
    for _ in range(3): # each Process creates a number of new Threads
        thread = threading.Thread(target=foo) 
        threads.append(thread)
        thread.start()
    for thread in threads:
        thread.join()

if __name__ == "__main__": 
    processes = []
    for _ in range(3):
        p = multiprocessing.Process(target=bar) # create a new Process
        p.start()
        processes.append(p)
    for process in processes:
        process.join()

线程之间的通信可以在每个进程中处理,进程之间的通信可以使用队列或管理器对象在根解释器级别处理。

关于python - 多线程处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45129894/

相关文章:

python - 如何使用selenium点击discord服务器 channel ?

python - 停止继承的方法从它的 super 方法内部运行

python - 如何在Python中对列表中的词频进行排序(但不是全部打印出来)

python - 是否可以在 Google App Engine 中使用 PyMongo?

python-3.x - 使用 firebase-admin sdk 和用户电子邮件从 firebase 中删除用户

python - 如何从 Pandas 中的 m8[ns] 对象中获取小时数?

python - 乘以包含 NaN 的 Pandas 系列行

python - 仅使用 python、html 下载 amazon.co.uk 网页,就像 firebug 看到的那样

python - Pypi 中缺少 Urllb2 包

Perl 网络爬虫框架