如何在一行python上使用线程,而不是在所有脚本上

如何在一行python上使用线程,而不是在所有脚本上,python,multithreading,python-2.5,Python,Multithreading,Python 2.5,我需要知道是否有一种方法可以在一行中使用多线程,而不是整个程序 即,我想将程序作为单个线程运行,但在中间,我希望一个特定的行是多线程的。我想多线程处理如下内容: br.open("http://www.google.com.pk/search?q="+str(m)) 所以,基本上我想打开所有链接(m可以假设50个不同的值),我不想一个接一个地打开它们。我想一次打开全部50个!如果我一个接一个地打开它们,会减慢进程,我想避免这种情况。你想看看这个类 如果您正在执行多个HTTP请求,您可能还需要查

我需要知道是否有一种方法可以在一行中使用多线程,而不是整个程序

即,我想将程序作为单个线程运行,但在中间,我希望一个特定的行是多线程的。我想多线程处理如下内容:

br.open("http://www.google.com.pk/search?q="+str(m))
所以,基本上我想打开所有链接(
m
可以假设50个不同的值),我不想一个接一个地打开它们。我想一次打开全部50个!如果我一个接一个地打开它们,会减慢进程,我想避免这种情况。

你想看看这个类

如果您正在执行多个HTTP请求,您可能还需要查看,然后将多个HTTP请求排队。这是一个很好的例子。

您想看看这个类


如果您正在执行多个HTTP请求,您可能还需要查看,然后将多个HTTP请求排队。这是一个很好的例子。

您需要异步通信。我自己也没试过,但是看看。它曾经是请求库的一部分,但已经被分解掉了。使用(从他们的github页面)似乎非常简单:

import grequests

urls = [
    'http://www.heroku.com',
    'http://tablib.org',
    'http://httpbin.org',
    'http://python-requests.org',
    'http://kennethreitz.com'
]
rs = (grequests.get(u) for u in urls)
grequests.map(rs)
如果希望保留在Python标准库中,可以查看一下模块


另外,另一种选择是。对于您的需求来说,这可能是过度的,而且学习曲线是出了名的陡峭。

您需要异步通信。我自己也没试过,但是看看。它曾经是请求库的一部分,但已经被分解掉了。使用(从他们的github页面)似乎非常简单:

import grequests

urls = [
    'http://www.heroku.com',
    'http://tablib.org',
    'http://httpbin.org',
    'http://python-requests.org',
    'http://kennethreitz.com'
]
rs = (grequests.get(u) for u in urls)
grequests.map(rs)
如果希望保留在Python标准库中,可以查看一下模块


另外,另一种选择是。对于您的需求来说,这可能有些过分,而且学习曲线是出了名的陡峭。

我在这里实际上是想回答OP提出的原始问题,由于明显的可读性问题,我不建议使用此代码,但就像在Java中一样,您可以在Python中从一行运行线程

我们将使用Python中的Thread类

from threading import Thread
定义要调用的函数

def func1():
   print("Hello World")
从一行开始一个线程

Thread(target=func1).start()
这就是在python中启动一个线性线程的方式

对于

我在这里实际上是想回答OP提出的原始问题,由于明显的可读性问题,我不建议使用此代码,但就像在Java中一样,实际上可以在Python中从一行运行线程

我们将使用Python中的Thread类

from threading import Thread
定义要调用的函数

def func1():
   print("Hello World")
从一行开始一个线程

Thread(target=func1).start()
这就是在python中启动一个线性线程的方式

对于

,作为一般性评论,与如何操作无关:每个
open
调用都会发送一个HTTP请求,您应该注意一次向服务器(尤其是谷歌)发送多少请求。如果你在没有适当休息/睡眠的情况下大量执行这些操作,它们可能会阻止你。此外,一次打开50个线程并不一定会让事情变得更快。无论如何,这里有一些启示:你正在运行新的25核超线程CPU吗?@jedwards我有core i7 2600k-@phg作为线程,它会打开50个链接,而不像顺序方式-顺序方式会让它变慢,因为当我打开它时,加载页面需要2-4秒-就像一般评论一样,与此无关:每个
open
调用都会发送一个HTTP请求,您应该注意一次向服务器(尤其是谷歌)发送多少请求。如果你在没有适当休息/睡眠的情况下大量执行这些操作,它们可能会阻止你。此外,一次打开50个线程并不一定会让事情变得更快。无论如何,这里有一些启示:你正在运行新的25核超线程CPU吗?@jedwards我有core i7 2600k-@phg作为线程,它会打开50个链接,而不像按顺序打开-按顺序打开会使它变慢,因为当我打开它时,加载页面需要2-4秒-