Разделение одной и той же задачи на потоки (процессы?) В Python - PullRequest
0 голосов
/ 02 июля 2018

В основном у меня есть функция, которая просто получает X количество (истинных) случайных чисел при пинге веб-службы в Интернете. Однако это довольно медленно, так как он ожидает завершения одного запроса, прежде чем перейти к следующему. Как мне добавить многопоточность (или процессы?), Чтобы несколько запросов отправлялись и печатались одновременно. (Порядок их не важен)

Есть ли у Python такая возможность? Если так, то как?

Спасибо

1 Ответ

0 голосов
/ 02 июля 2018

Да. Это можно сделать в Python. gevents - моя библиотека goto для всего, что связано с MultiThreading или MultiProcessing в 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)
...