基本上,我有一个函数,该函数通过对网络服务进行ping通仅获取X数量的(真)随机数。但是,这很慢,因为它会先等待一个请求完成,然后再转到下一个请求。我将如何向其中添加多线程(或进程?),以便同时发送和打印多个请求。 (这些顺序并不重要)
Python是否有能力做到这一点?如果可以,怎么办?
谢谢
答案 0 :(得分:1)
是的。这可以在Python中完成。 gevents是我的goto库,其中包含与Python中的多线程或多处理相关的所有内容。
一个简单的例子是:
import gevent
from gevent import Greenlet
def foo(message, n):
"""
Each thread will be passed the message, and n arguments
in its initialization.
"""
gevent.sleep(n)
print(message)
# Initialize a new Greenlet instance running the named function
# foo
thread1 = Greenlet.spawn(foo, "Hello", 1)
# Wrapper for creating and runing a new Greenlet from the named
# function foo, with the passed arguments
thread2 = gevent.spawn(foo, "I live!", 2)
# Lambda expressions
thread3 = gevent.spawn(lambda x: (x+1), 2)
threads = [thread1, thread2, thread3]
# Block until all threads complete.
gevent.joinall(threads)