我对产生子进程有一些烦恼,比如获得正确的输出等等。一个包装库envoy通过一个易于使用的界面解决了我的所有问题,该界面摆脱了大多数问题。
使用线程时,我有时会遇到无法结束的挂起进程、在我无法再访问的线程中启动的外部程序等问题。
那里有任何“傻瓜线程”python库吗?谢谢
我对产生子进程有一些烦恼,比如获得正确的输出等等。一个包装库envoy通过一个易于使用的界面解决了我的所有问题,该界面摆脱了大多数问题。
使用线程时,我有时会遇到无法结束的挂起进程、在我无法再访问的线程中启动的外部程序等问题。
那里有任何“傻瓜线程”python库吗?谢谢
那里有任何“傻瓜线程”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
完成。只有这样它才会返回。
我建议阅读更多关于实际 Python 库的信息——它很简单。您的线程挂起问题(如果它阻止您的应用程序退出)可以通过使用守护线程来解决。
你想完成什么样的任务?如果您尝试在不实际使用自定义线程的情况下并行运行任务,您可能会发现包multiprocessing很有用。此外,python wiki 上有一条关于并行处理的有趣信息。
你能详细说明一下这个任务吗?