【发布时间】:2017-01-30 20:42:06
【问题描述】:
当我使用 gevent 时,它仍然是同步的并且运行时间没有减少。
这是我的脚本:
def fun(i):
p = subprocess.Popen(['./main', 'data.txt'], stdout=PIPE, stderr=PIPE)
err = p.communicate()[1]
p.wait()
def synchronous():
for i in range(1,10):
fun(i)
def asynchronous():
threads = [gevent.spawn(fun, i) for i in xrange(10)]
gevent.joinall(threads)
比较%timeit synchronous()和%timeit asynchronous(),变化不大。而'main'是编译后的c++文件,'data.txt'是'main'的输入文件。
我猜问题是我使用子进程调用外部例程,但我不知道如何解决这个问题。
【问题讨论】:
-
尝试使用
pool.map类似的东西。 stackoverflow.com/questions/5442910/… -
@lennard 似乎可行。非常感谢。但是这两种方式有什么区别呢?
标签: python python-2.7 asynchronous gevent