用于管理线程的备用python库

时间:2012-09-25 16:12:05

标签: python multithreading

我对产生子过程有些烦恼,比如获得正确的输出等等。一个包装库envoy通过易于使用的界面解决了我的所有问题,解决了大多数问题。

使用线程,我有时很难处理挂起的进程,这些进程没有结束,外部程序在线程中启动,我再也无法访问等等。

那里有“傻瓜线程”蟒蛇图书馆吗?感谢

2 个答案:

答案 0 :(得分:7)

那里有“傻瓜线程”python库吗?

不,没有。在简单的情况下使用threading非常简单。您希望使用它在程序中引入并发性。这意味着您希望在需要同时进行两个或多个操作时(即同时)使用它。

这就是你如何让彼得建造一座房子并让伊戈尔同时开车前往莫斯科:

from threading import Thread
import time

def drive_bus():
    time.sleep(1)
    print "Igor: I'm Igor and I'm driving to... Moskow!"
    time.sleep(9)
    print "Igor: Yei, Moskow!"

def build_house():
    print "Peter: Let's start building a large house..."
    time.sleep(10.1)
    print "Peter: Urks, we have no tools :-("

threads = [Thread(target=drive_bus), Thread(target=build_house)]

for t in threads:
    t.start()

for t in threads:
    t.join()

不是那么简单吗?定义要在另一个线程中运行的函数。使用该函数创建threading.Thread实例target。到目前为止,没有任何事情发生,直到你调用start。它会触发线程,会立即返回

在让主线程退出之前,您应该等待已经生成的所有线程完成。这就是t.join()的作用:它阻塞并等待线程t完成。只有这样它才会返回。

答案 1 :(得分:3)

我建议您阅读有关实际Python库的更多信息 - 这很简单。挂起线程的问题,如果它阻止您的应用程序退出,可以通过使用守护程序线程来解决。

您想要达到什么样的任务?如果您尝试并行运行任务而不实际使用自定义线程,则可能会发现包multiprocessing有用。此外,关于parallel processing的python wiki还有一段有趣的信息。

你能详细说明一下这个任务吗?