0
Когда я использую gevent, и он все еще синхронный, и время выполнения не уменьшается.Python 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' примерно так. http://stackoverflow.com/questions/5442910/python-multiprocessing-pool-map-for-multiple-arguments – lennard
@lennard Кажется, работа. Большое спасибо. Но в чем разница между этими двумя способами? – insomnia