我对产生子过程有些烦恼,比如获得正确的输出等等。一个包装库envoy通过易于使用的界面解决了我的所有问题,解决了大多数问题。
使用线程,我有时很难处理挂起的进程,这些进程没有结束,外部程序在线程中启动,我再也无法访问等等。
那里有“傻瓜线程”蟒蛇图书馆吗?感谢
答案 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还有一段有趣的信息。
你能详细说明一下这个任务吗?