将相同任务划分为python

时间:2018-07-02 05:03:09

标签: python multithreading python-3.x parallel-processing

基本上,我有一个函数,该函数通过对网络服务进行ping通仅获取X数量的(真)随机数。但是,这很慢,因为它会先等待一个请求完成,然后再转到下一个请求。我将如何向其中添加多线程(或进程?),以便同时发送和打印多个请求。 (这些顺序并不重要)

Python是否有能力做到这一点?如果可以,怎么办?

谢谢

1 个答案:

答案 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)